[i=s] 本帖最后由 arklr73021 于 2025-4-3 13:27 编辑 [/i]
利用string.type函数和string.char函数偏移来尝试字符串加密解密,在加密解密过程中利用table存储加解密获得的ascii码
-- --**********************************************************************
local tb = {} -- 设置一个表用于存放加密前的ascii码
local encryptiontb = {} -- 设置一个表用于存放加密后的ascii码
local function encryption(str,offset)
for i = 1 , #str do
tb[i] = string.byte(str,i) -- 用表tb来存储转换获取的ascii码
encryptiontb[i] = string.byte(str,i) + offset --对转换获得的ASCII码进行偏移+9 的加密
end
print("加密前:"..table.concat(tb,","))
print("加密后:"..table.concat(encryptiontb,",").."--加密偏移值:"..offset)
local nn = ""
local nn = table.concat(encryptiontb,",")
return nn -- 将加密后的字符串返回
end
QA = encryption("world",9)
print("获取到的加密后的字符串:"..QA)
local function decrypt(encryptString,decryptionOffset)
local li = {}
for k , v in pairs(encryptString) do
li[k] = string.char(encryptString[k]-decryptionOffset) -- 迭代解密并将解密获得的值存入到表(li)中
end
return li
end
local oo = decrypt(encryptiontb,9) -- 函数传入上面加密偏移+9获取的表,加密偏移数值
print("解密获取字符串:"..table.concat(oo))
--优化修改解密函数
local tb = {} -- 设置一个表用于存放加密前的ascii码
local encryptiontb = {} -- 设置一个表用于存放加密后的ascii码
local function encryption(str,offset)
for i = 1 , #str do
tb[i] = string.byte(str,i) -- 用表tb来存储转换获取的ascii码
encryptiontb[i] = string.byte(str,i) + offset --对转换获得的ASCII码进行偏移+9 的加密
end
print("加密前:"..table.concat(tb,","))
print("加密后:"..table.concat(encryptiontb,",").."--加密偏移值:"..offset)
local nn = ""
local nn = table.concat(encryptiontb,",")
return nn -- 将加密后的字符串返回
end
QA = encryption("world",9)
print("获取到的加密后的字符串:"..QA)
local function decrypt(encryptString,decryptionOffset)
local li = {}
for k , v in pairs(encryptString) do
table.insert(li,string.char(encryptString[k]-decryptionOffset)) -- 迭代解密并将解密获得的值存入到表(li)中
end
return li
end
local oo = decrypt(encryptiontb,9) -- 函数传入上面加密偏移+9获取的表,加密偏移数值
print("解密获取字符串:"..table.concat(oo))