凯撒密码
凯撒密码是一种非常简单的加密文本的方法,其作者身份归因于罗马指挥官尤利乌斯凯撒。 该方法的实质是,源文本的每个字母被另一个字母替换,该字母在字母表中移位一定数量的位置。
这种加密方法非常简单,易于破解,因此这些天没有用于严重的信息保护。 但是,它非常适合演示加密的基本原理,可用于教育目的,以及显示使用标准符号表处理索引的可能性。
在这个例子中,我们将使用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)
结论
正如你所看到的,作为转换的结果,我们得到了原来的单词。 这意味着我们的功能正常工作。