Engee 文档
Notebook

游戏化

游戏化是按照一定的规律,在公共数据上强加密码的过程。

密码伽马是根据特定算法产生的伪随机二进制序列,用于加密公共数据和解密加密数据。如果输入信息的长度等于伽马值的长度,这种加密方法就无法破解。

该方法的实质是将密文的字符按顺序添加到某个特殊序列的字符中,这个特殊序列被称为伽马。

伽马值加法的方法如下: 1.用等效数字替换源文本和伽马值中的字符,然后将这些等效数字与 k 相加,其中 k 是字母表中的字符数,即Ri=(Si+G)mod(k-1),其中 Ri、Si、G 分别是密码文本、源文本和伽马值的字符。 2.2. 源代码和伽马字符用二进制代码表示,然后将相应的数字进行模 2 相加。在伽马运算中,可以使用其他逻辑函数代替模 2 加法。 现在让我们来看看我们实现的算法。代码如下。

由于这一运算本身是可逆的,因此加密和解密函数是相同的。

In [ ]:
# Реализация функции bitxor
bitxor(a::Integer, b::Integer) = a  b
Out[0]:
bitxor (generic function with 1 method)
In [ ]:
# Определение входных значений
input_string = collect("Экспонента")
Game = collect("Engee")

# Выравнивание гаммы относительно входного слова
Game = repeat([Game], inner=(ceil(Int, length(input_string) / length(Game))))
Game = collect(Iterators.flatten(Game))
Out[0]:
10-element Vector{Char}:
 'E': ASCII/Unicode U+0045 (category Lu: Letter, uppercase)
 'n': ASCII/Unicode U+006E (category Ll: Letter, lowercase)
 'g': ASCII/Unicode U+0067 (category Ll: Letter, lowercase)
 'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
 'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
 'E': ASCII/Unicode U+0045 (category Lu: Letter, uppercase)
 'n': ASCII/Unicode U+006E (category Ll: Letter, lowercase)
 'g': ASCII/Unicode U+0067 (category Ll: Letter, lowercase)
 'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
 'e': ASCII/Unicode U+0065 (category Ll: Letter, lowercase)
In [ ]:
# Кодирование
output = map(x -> bitxor(Int(x[1]), Int(x[2])), zip(input_string, Game[1:length(input_string)]))

# Печать результата кодирования
println("Закодированная строка:")
for ch in output
    print(Char(ch))
end

# Декодирование
input_string2 = output
# Алгоритм
output2 = map(x -> bitxor(Int(x[1]), Int(x[2])), zip(input_string2, Game[1:length(input_string2)]))

# Печать результата декодирования
println("\nДекодированная строка:")
for ch in output2
    print(Char(ch))
end
Закодированная строка:
ѨєЦњћѸћњЧѕ
Декодированная строка:
Экспонента

结论

在本演示中,我们验证了伽马公式的正确运行。