Прямо сейчас у меня есть следующий код для Cesar Cipher, но я столкнулся с проблемой, когда пытаюсь шифровать текст с очень большим числом. Например 1000.Шифрование большими числами с использованием Caesar Cipher
static String encrypt(String plaintext) {
StringBuilder ciphertext = new StringBuilder(plaintext);
for (int i = 0; i < ciphertext.length(); i++) {
ciphertext.setCharAt(i, encrypt(ciphertext.charAt(i)));
}
return ciphertext.toString();
}
static String decrypt(String plaintext) {
StringBuilder ciphertext = new StringBuilder(plaintext);
for (int i = 0; i < ciphertext.length(); i++) {
ciphertext.setCharAt(i, decrypt(ciphertext.charAt(i)));
}
return ciphertext.toString();
}
static char encrypt(char c) {
return (char) ('!' + (c - '!' + 1000) % ('~' - '!' + 1));
}
static char decrypt(char c) {
return (char) ('!' + (c - '!' - 1000) % ('~' - '!' + 1));
}
Позволяет сказать, что я вход «ABC123» в шифровании, используя 1000 как мой ключ, я получаю кучу неизвестных символов. Имейте в виду, что я не хочу, чтобы он просто перебирал a-z, но символы тоже, используя коды ASCII.
Любая помощь будет замечательной!
Ссылка на ASCII таблицы я использую: http://www.asciitable.com/ – Arman
Так как вы только хотите отобразить на видимых символов ASCII, 126-33 + 1 = 94 возможных значений. Любая клавиша выше 93 будет иметь соответствующий меньший ключ, который будет делать то же самое. 95 будет шифровать то же самое, что и 1, 0 как 94 и т. Д., Поэтому большое значение, такое как 1000, не требуется. – ryanpattison
@rpattiso Даже если я использую 93 вместо 1000, я все еще получаю неизвестные символы или невидимые символы. – Arman