Простой caesar шифр в Java

Если я хочу быстро отладить сервис, я просто заглядываю Debugger.Break() там. Когда та строка будет достигнута, она будет ронять меня к VS. Не забывайте удалять ту строку, когда Вы будете сделаны.

ОБНОВЛЕНИЕ: Как альтернатива #if DEBUG прагмы, можно также использовать Conditional("DEBUG_SERVICE") атрибут.

[Conditional("DEBUG_SERVICE")]
private static void DebugMode()
{
    Debugger.Break();
}

На Вашем OnStart, просто назовите этот метод:

public override void OnStart()
{
     DebugMode();
     /* ... do the rest */
}

Там, код будет только включен во время сборок Отладки. В то время как Ваш в нем, могло бы быть полезно создать отдельную Конфигурацию сборки для сервисной отладки.

6
задан Max Canlas 30 November 2009 в 18:32
поделиться

4 ответа

Как насчет чего-то вроде этого:

public String applyCaesar(String text, int shift)
{
    char[] chars = text.toCharArray();
    for (int i=0; i < text.length(); i++)
    {
        char c = chars[i];
        if (c >= 32 && c <= 127)
        {
            // Change base to make life easier, and use an
            // int explicitly to avoid worrying... cast later
            int x = c - 32;
            x = (x + shift) % 96;
            if (x < 0) 
              x += 96; //java modulo can lead to negative values!
            chars[i] = (char) (x + 32);
        }
    }
    return new String(chars);
}

По общему признанию, это рассматривает 127 как неконтролирующий символ, что не является ... вы можете настроить его, чтобы сохранить диапазон как [ 32, 126].

8
ответ дан 8 December 2019 в 18:37
поделиться

Сопоставьте свои символы от [32..127] до [0..95], выполните mod 95 + 1 и сопоставьте результат обратно с [32..127].

]
1
ответ дан 8 December 2019 в 18:37
поделиться

Обычно зашифрованный текст имеет кодировку base64, base16 (шестнадцатеричный) также работает хорошо. Base64 чаще всего используется для зашифрованного текста, потому что он занимает меньше места, чем шестнадцатеричный, шестнадцатеричный чаще всего используется для дайджеста сообщений. В библиотеке java.util.prefs.Base64 вы найдете byteArrayToBase64 () и base64ToByteArray ().

Кстати, вы НИКОГДА не должны писать свой собственный алгоритм шифрования по соображениям безопасности, вы должны использовать блочный или потоковый шифр. Надеюсь, это для развлечения!

1
ответ дан 8 December 2019 в 18:37
поделиться

там! Есть ли способ рассмотреть весь спектр персонажей? Например, «á», «é», «ö», «ñ», а не рассматривать «» ([Пробел])? (Например, моя строка - «Hello World», а стандартный результат - «Khoor # Zruog»; я хочу стереть этот «#», поэтому результатом будет «KhoorZruog»)

Я уверен, что мой ответ находится в этом фрагменте кода:

if (c >= 32 && c <= 127)
        {
            // Change base to make life easier, and use an
            // int explicitly to avoid worrying... cast later
            int x = c - 32;
            x = (x + shift) % 96;
            chars[i] = (char) (x + 32);
        }

... Но я пробовал кое-что, и ничего не вышло: S Итак, я буду ждать ваших ответов: D Увидимся!

1
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: