Engee 文档
Notebook

凯撒密码

凯撒密码是一种非常简单的加密文本的方法,其作者身份归因于罗马指挥官尤利乌斯凯撒。 该方法的实质是,源文本的每个字母被另一个字母替换,该字母在字母表中移位一定数量的位置。
这种加密方法非常简单,易于破解,因此这些天没有用于严重的信息保护。 但是,它非常适合演示加密的基本原理,可用于教育目的,以及显示使用标准符号表处理索引的可能性。

在这个例子中,我们将使用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]:
caesar_cipher_encode_decode (generic function with 2 methods)
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)
Encoded Text: Hqjhh
Decoded Text: Engee

结论

正如你所看到的,作为转换的结果,我们得到了原来的单词。 这意味着我们的功能正常工作。