mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-24 20:23:06 +00:00
优化hmac
This commit is contained in:
@@ -15,19 +15,21 @@ function core.sumhexa (k)
|
|||||||
end))
|
end))
|
||||||
end
|
end
|
||||||
|
|
||||||
function core.hmac_md5(data,key)
|
local function get_ipad(c)
|
||||||
|
return string.char(c:byte() ~ 0x36)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_opad(c)
|
||||||
|
return string.char(c:byte() ~ 0x5c)
|
||||||
|
end
|
||||||
|
|
||||||
|
function core.hmacmd5(data,key)
|
||||||
if #key>64 then
|
if #key>64 then
|
||||||
key=core.sum(key)
|
key=core.sum(key)
|
||||||
key=string.sub(key,1,16)
|
key=key:sub(1,16)
|
||||||
end
|
|
||||||
|
|
||||||
local b=table.pack(string.byte(key,1,#key))
|
|
||||||
local ipad_s=""
|
|
||||||
local opad_s=""
|
|
||||||
for i=1,64 do
|
|
||||||
ipad_s=ipad_s..string.char((b[i] or 0)~0x36)
|
|
||||||
opad_s=opad_s..string.char((b[i] or 0)~0x5c)
|
|
||||||
end
|
end
|
||||||
|
local ipad_s=key:gsub(".", get_ipad)..string.rep("6",64-#key)
|
||||||
|
local opad_s=key:gsub(".", get_opad)..string.rep("\\",64-#key)
|
||||||
local istr=core.sum(ipad_s..data)
|
local istr=core.sum(ipad_s..data)
|
||||||
local ostr=core.sumhexa(opad_s..istr)
|
local ostr=core.sumhexa(opad_s..istr)
|
||||||
return ostr
|
return ostr
|
||||||
|
|||||||
Reference in New Issue
Block a user