簡體   English   中英

如何在Lua中將十六進制字符串轉換為ASCII字符串

[英]How to convert an hex string into ascii string in Lua

我對LUA一無所知,我正在嘗試為nginx編寫一個小腳本。

我正在使用以下庫( https://github.com/openresty/lua-resty-string )加密一些數據。 具體來說,我正在使用AES 256 CBC(SHA-512,鹽腌)加密代碼,並存儲十六進制編碼的加密字符串,如示例所示。

現在的問題是,我需要將十六進制字符串返回到需要ASCII字符串的解密方法。

這是加密的十六進制字符串的示例:

fdbcc47fe5825d49ac3429d4f8408fa4b6528dd99d938f122ee7f00ab71ae0c5c73d29d4f54ea1fbefe706b5dca04f6b6c6b8b96d9807ef58eaba07c6c6cefaf6ad8673b43a4e243fb2912fb4ff93de6488c4795ebb09ecd7a40b7c9dc2003be4ff93425d2d74688208fa4d2a8d22f32490666550f4b01340de708d7aa5bc8468d171da400f59fcff4e7d371d7ab9b48fdfde29aefc0af78b2f934927a7713994c1e8f9435067c851efc5d300405c74d

出於幾乎相同的原因,最近不得不寫一個。 濫用gsub捕獲每個兩個字符,並用hexnumber-> character map中的預先計算的值替換它們。

-- Needs to be only done once
local hex_to_char = {}
for idx = 0, 255 do
    hex_to_char[("%02X"):format(idx)] = string.char(idx)
    hex_to_char[("%02x"):format(idx)] = string.char(idx)
end

-- Sometime later
str = "fdbcc47fe5825d49ac3429d4f8408fa4b6528dd99d938f122ee7f00ab71ae0c5c73d29d4f54ea1fbefe706b5dca04f6b6c6b8b96d9807ef58eaba07c6c6cefaf6ad8673b43a4e243fb2912fb4ff93de6488c4795ebb09ecd7a40b7c9dc2003be4ff93425d2d74688208fa4d2a8d22f32490666550f4b01340de708d7aa5bc8468d171da400f59fcff4e7d371d7ab9b48fdfde29aefc0af78b2f934927a7713994c1e8f9435067c851efc5d300405c74d"
print(str:gsub("(..)", hex_to_char))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM