Шифр Цезаря¶
Шифр Цезаря — это очень простой способ шифрования текста, авторство которого приписывают римскому полководцу Юлию Цезарю. Суть метода заключается в том, что каждая буква исходного текста заменяется другой буквой, сдвинутой на определённое количество позиций в алфавите. Этот метод шифрования очень прост и легко поддаётся взлому, поэтому в наши дни он не используется для серьёзной защиты информации. Однако он хорошо подходит для демонстрации базовых принципов шифрования и может использоваться в образовательных целях, а также позволяет показать возможности применения стандартных таблиц символов для работы с индексами.
В данном примере мы воспользуемся таблицей ASCII для реализации этого алгоритма. Определим функцию для кодирования и декодирования строки с помощью шифра Цезаря.
function caesar_cipher_encode_decode(text::String, shift::Int, code::Bool)
encoded_text = Char[]
# Проходим по каждому символу в строке
for char in text
ascii_code = Int(char) # Преобразуем символ к его индексу в ASCII
# Определяем новое значение ASCII-кода в зависимости от типа операции (кодирование или декодирование)
if code
new_ascii_code = ascii_code + shift # Если кодируем, добавляем сдвиг к текущему значению ASCII-кода
else
new_ascii_code = ascii_code - shift # Если декодируем, вычитаем сдвиг из текущего значения ASCII-кода
end
push!(encoded_text, Char(new_ascii_code)) # Преобразуем новое значение ASCII-кода обратно в символ и добавляем его в массив
end
return join(encoded_text) # Соединяем все символы в единую строку и возвращаем результат
end
# Пример использования функций
plaintext = "Engee"
shift_amount = 3
ciphertext = caesar_cipher_encode_decode(plaintext, shift_amount, true)
println("Encoded Text: ", ciphertext)
decrypted_text = caesar_cipher_encode_decode(ciphertext, shift_amount, false)
println("Decoded Text: ", decrypted_text)
Вывод¶
Как видно, в результате преобразований мы получили исходное слово. Значит, наша функция работает корректно.