我在Lua中创建(差)加密脚本,为此,我需要创建一个循环,它将为字符串中的每个数字返回一个值,例如:< / p>
Input: 15, 18, 1, 20, 15, 18, 15, 5, 21, 1, 18, 15, 21, 16, 1, 4, 15, 18, 5, 9, 4, 5, 18, 15, 13, 1
我希望它将这些数字中的每一个返回到一个函数,该函数将对它们进行一定的数学运算,然后返回每个结果数字的对应字母(15将变为&#39; o&#39;,18将成为&#39;等等)
详细解释,我需要一段代码插入到一个函数中:
将字符串中的每个数字都返回给函数。
此后,该功能需要将数字转换为字母(如前所述)。
然后新函数需要将结果字母插入新字符串中。
这是一个如何表现的简短例子。
Input: 8, 5, 12, 12, 15
Result: 26, 7, 15, 15, 12 (These numbers aren't constant because of a hidden math made inside the function.)
Input: 26, 7, 15, 15, 12
Result: z, g, o, o, l
Input: z, g, o, o, l
Result: "zgool"
我认为这个项目的源代码对于这个场合来说并不是必需的,我只是将这个代码实现到脚本上的函数中。请,某人(了解我的意思)可以帮助我吗?
答案 0 :(得分:1)
local function my_poor_cryptography(s)
local codes = {}
-- string to numbers
for c in s:gmatch"%a" do
table.insert(codes, c:byte() - (c:find"%l" and 96 or 64))
end
-- math here (https://en.wikipedia.org/wiki/ROT13)
for j = 1, #codes do
codes[j] = (codes[j] + 12) % 26 + 1
end
-- numbers to string
s = s:gsub("%a",
function(c)
return c.char(table.remove(codes, 1) + (c:find"%l" and 96 or 64))
end)
return s
end
用法:
local str = "Hello, World!"
str = my_poor_cryptography(str)
print(str) --> Uryyb, Jbeyq!
str = my_poor_cryptography(str)
print(str) --> Hello, World!