У меня проблема, когда я создаю 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.





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)
Большое спасибо за ваш ответ, и я надеюсь, что он будет работать с sha256. Попробую и обновлю.
Большое спасибо за ваш ответ. к сожалению, я не получаю ту же хеш-строку, что и код node.js. Я пробовал каждое бедро ниже, это код node js.. 1. let accesskey = Buffer.from('AWS KEY', 'base64') o /p - <Buffer 26 e 4a 4a df> 2. let hmac = crypto.createHmac("sha256",accesskey) 3.let signString = Buffer.from(signString "utf-8"); пусть hmacUpdate = hmac.update(signString); hmacUpdateBase64 = hmacUpdate.digest("base64"); // окончательный локальный код LUA Hmac your_hmac_as_hex_string = sha2.hmac( sha2.sha256, -- SHA-1 secretKeyBinary, signString )
@AshishMishra - Ответ обновлен, модуль sha2.lua также обновлен на GitHub.
Если это все еще не работает, покажите точные входные аргументы вашего скрипта Lua (и точную строку результата, которую вы ожидаете)
Конечно @ЕгорСкриптунофф . Я постараюсь обновить вас. Еще раз спасибо
Спасибо @EgorSkriptunoff .. это мне очень помогает. сейчас работает
какой у Вас вопрос?