LUA HMAC 生成问题在5.1版本中

我在创建 LUA 5.1 版本中的 HMAC 时遇到了问题,而相同的代码在 node.js 中工作正常

Node.js 代码:

crypto.createHmac(
  CONSTANTS.HMAC_ALORITHM_SHA,
  Buffer.from(
    secretAccessKey,
    CONSTANTS.BASE64_ENCODING
  )
).update(
  Buffer.from(
    stringToSign,
    CONSTANTS.UTF8
  )
).digest(
  CONSTANTS.BASE64_ENCODING
);

我想在相同的代码中编写 LUA 5.1。

点赞
用户6834680
用户6834680
local sha2 = require("sha2")
local your_hmac_as_hex_string = sha2.hmac(
   sha2.sha1,  -- SHA-1
   "secretAccessKey as binary string", -- 将密钥以二进制字符串形式提供
   "stringToSign"
)
local your_hmac_as_binary_string = sha2.hex2bin(your_hmac_as_hex_string)

该库在此处


更新:

如果你的密钥以base64编码存储,你需要将其从base64转换为二进制:

local binary_key = sha2.base642bin(base64_key)
-- 在这里调用 sha2.hmac()

如果你想将结果转换为base64:

local your_hmac_as_base64 = sha2.bin2base64(your_hmac_as_binary_string)
2019-03-15 18:09:03