Выпуск LUA HMAC Generation в версии 5.1 - PullRequest
0 голосов
/ 15 марта 2019

У меня проблема при создании HMAC в версии LUA 5.1, и тот же код работает в 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.

1 Ответ

0 голосов
/ 15 марта 2019
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)
-- invoke sha2.hmac() here

И если вы хотите преобразовать результат в base64:

local your_hmac_as_base64 = sha2.bin2base64(your_hmac_as_binary_string)
...