如何编写Lua函数实现十六进制加密字符串的逆向还原?
逆向函数实现方案
原代码的核心逻辑是将每个字符转换为两位大写十六进制字符串(不足两位时补前导零),再拼接成完整的加密串。逆向函数需要做的就是把这个加密串按两位一组拆分,将每组十六进制值还原为对应的ASCII字符。
逆向代码实现
function hexToStr(hexStr) local result = "" -- 按两位一组匹配十六进制字符 hexStr:gsub("%x%x", function(hex) -- 将十六进制字符串转为十进制,再转成对应字符 result = result .. string.char(tonumber(hex, 16)) end) return result end -- 测试示例:用原代码的输出作为输入 local encrypted = "417574682D2B2D5354344646" print(hexToStr(encrypted)) -- 输出:Auth-+-ST4FF
代码说明
%x%x是Lua正则表达式,匹配任意两位十六进制字符(兼容大小写,无论原加密串是大写还是小写都能处理)tonumber(hex, 16)将两位十六进制字符串转为十进制数字,对应字符的ASCII码string.char()将ASCII码转换为对应的字符,最终拼接成原始字符串
内容的提问来源于stack exchange,提问作者Sunken
相关产品推荐
相关产品推荐

