Engee documentation
Notebook

The Caesar Cipher

The Caesar cipher is a very simple way to encrypt text, the authorship of which is attributed to the Roman commander Julius Caesar. The essence of the method is that each letter of the source text is replaced by another letter shifted by a certain number of positions in the alphabet.
This encryption method is very simple and easy to crack, so it's not used for serious information security these days. However, it is well suited to demonstrate the basic principles of encryption and can be used for educational purposes, as well as to show the possibilities of using standard symbol tables to work with indexes.

In this example, we will use the ASCII table to implement this algorithm. Let's define a function for encoding and decoding a string using a Caesar cipher.

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

Conclusion

As you can see, as a result of the transformations, we got the original word. This means that our function is working correctly.