【问题标题】:LUA HMAC Generation issue in 5.1 version5.1 版本中的 LUA HMAC 生成问题
【发布时间】:2019-03-15 14:09:47
【问题描述】:

我在 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。

【问题讨论】:

  • 你的问题是什么?

标签: lua kong kong-plugin


【解决方案1】:
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)

图书馆是here


更新:

如果你的密钥是base64存储的,你需要把它从base64转换成二进制:

local binary_key = sha2.base642bin(base64_key)
-- invoke sha2.hmac() here

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

local your_hmac_as_base64 = sha2.bin2base64(your_hmac_as_binary_string)

【讨论】:

  • 非常感谢您的回复,我希望它能与 sha256 一起使用。会尝试更新。
  • 非常感谢您的回复。不幸的是,我没有从 node.js 代码中得到相同的哈希字符串。我尝试过下面的每个大腿都是 node js 代码.. 1. let accesskey = Buffer.from('AWS KEY', 'base64') o /p - 2. let hmac = crypto.createHmac("sha256",accesskey) 3.let signString = Buffer.from(signString "utf-8");让 hmacUpdate = hmac.update(signString); hmacUpdateBase64 = hmacUpdate.digest("base64"); //最终的 Hmac 本地 LUA 代码 your_hmac_as_hex_string = sha2.hmac( sha2.sha256, -- SHA-1 secretKeyBinary, signString )
  • @AshishMishra - 答案已更新,模块 sha2.lua 也在 GitHub 上更新。
  • 如果它仍然不起作用,请显示您的 Lua 脚本的准确输入参数(以及您期望的准确结果字符串)
  • 当然@EgorSkriptunoff。我会尝试更新你。再次感谢
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 2016-10-03
  • 2021-11-01
  • 2022-01-26
  • 1970-01-01
  • 2015-03-29
  • 2015-06-10
  • 2021-02-01
相关资源
最近更新 更多