Engee 文档
Notebook

转位法

置换法是一种加密方法,在这种方法中,源文本中的字符按照预先确定的规则进行交换。关键因素是排列顺序,它决定了字符的移动方式。置换法不会改变字符本身。改变的只是字符在文本中的位置。这种方法通常与其他加密方法结合使用,以提高传输数据的安全性。

在我们的示例中,我们将使用一种简单的置换方法,将整个信息移动预定数量的字符。

In [ ]:
# Функция для кодирования и декодирования методом перестановки
function transform_message(message::String, key::Int, mode::String)
    transformed_message = ""
    for i in 1:length(message)
        if mode == "encode"
            new_index = mod(i + key - 1, length(message)) + 1 # Перемещаем символ на key позиций вперед
        elseif mode == "decode"
            new_index = mod(i - key - 1, length(message)) + 1 # Перемещаем символ на key позиций влево
        else
            error("Допустимые значения: :encode, :decode")
        end
        transformed_message *= message[new_index]
    end
    return transformed_message
end
Out[0]:
transform_message (generic function with 2 methods)

让我们检查一下函数的性能。

In [ ]:
message = "Engee";
key = 6;

key = 6 % length(message)
println("Приведём ключ к длине строки, отбросив целые длины строк: $(key)")
println()

encoded = transform_message(message, key, "encode")
decoded = transform_message(encoded, key, "decode")

println("Исходное сообщение: ", message)
println("Закодированное сообщение: ", encoded)
println("Декодированное сообщение: ", decoded)
Приведём ключ к длине строки, отбросив целые длины строк: 1

Исходное сообщение: Engee
Закодированное сообщение: ngeeE
Декодированное сообщение: Engee

输出

我们可以看到,根据该模型在我们演示中的结果,输入字和输出字是一致的,这表明该函数工作正常。