凯撒密码¶
凯撒密码是一种非常简单的文本加密方法,其作者是罗马统帅凯撒大帝。这种方法的本质是将原文中的每个字母替换成字母表中移动一定位置的另一个字母。 这种加密方法非常简单,也很容易被破解,因此目前并不用于严肃的信息安全领域。不过,它可以很好地演示加密的基本原理,并可用于教育目的,还可以演示如何使用标准字符表来处理索引。
在本例中,我们将使用 ASCII 表来实现该算法。让我们定义一个函数,使用凯撒密码对字符串进行编码和解码。
In [ ]:
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
Out[0]:
In [ ]:
# Пример использования функций
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)
输出¶
正如您所看到的,经过转换后,我们得到了源词。这说明我们的函数工作正常。