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

结论

正如我们所看到的,根据我们演示中该模型的结果,输入和输出词重合,这表明该功能正常工作。