今天在用openresty处理AES解密的时候,发现lua-resty-string插件中aes.lua的函数decrypt(str)必须保证是二进制字符串,而针对十六进制字符串则无法解析,上网找了半天,发现很多十六进制转二进制字符串的函数其实效果都不好,结合他们的函数自己修改了一下。
function hex2bin( hexstr )
local str = ""
for i = 1, string.len(hexstr) - 1, 2 do
local doublebytestr = string.sub(hexstr, i, i+1);
local n = tonumber(doublebytestr, 16);
if 0 == n then
str = str .. '\00'
else
str = str .. string.format("%c", n)
end
end
return str
end
这段函数还有改进的地方,有时间可以想想怎么依靠ffi来处理,效率更高