【问题标题】:HMAC SHA256 base64 encodedHMAC SHA256 base64 编码
【发布时间】:2018-03-22 04:57:56
【问题描述】:

有一个为 Azure 创建签名的 Node.JS 代码。

var signature = crypto.createHmac("sha256", key).update(body).digest("base64");  

如何使用 LUA 创建相同的签名。 (我想我需要为此使用 Lua-Lockbox)

https://github.com/somesocks/lua-lockbox

我可以看到它有 Hmac、sha256 和 base64 原语,但我不确定如何将这段代码实现为 LUA

有什么线索吗?

【问题讨论】:

    标签: lua base64 sha256 hmac


    【解决方案1】:

    我不知道 lua-lockbox,但看起来应该可以:

    local stream = require "lockbox.util.stream"
    local hmac = require "lockbox.mac.hmac"
    local sha256 = require "lockbox.digest.sha2_256"
    local base64 = require "lockbox.util.base64"
    
    local body = stream.fromString("thisisthebody")
    local key = {("thekey"):byte(1,-1)}
    
    local digest = hmac()
        .setBlockSize(64)
        .setDigest(sha256)
        .setKey(key)
        .init()
        .update(body)
        .finish()
        .asBytes()
    
    local base64_digest = base64.fromArray(digest)
    
    print(base64_digest)
    

    【讨论】:

    • 非常感谢您的回答。我会尽力让你知道结果。
    • 在我的 javascript 代码中,key 的计算方式类似于 var key = new Buffer("ABC", "base64");新缓冲区是什么意思?如何在 LUA 中做同样的事情?提前致谢。
    • 我认为这意味着您的密钥“ABC”被编码为 Base64。我认为在 Lua 中你可以这样做:local key = base64.toArray("ABC").
    • 不幸的是,它不起作用。我正在尝试创建以下键。有 nodejs 和 .net 代码,但我无法使用 lua 创建相同的值。有时间的话,看一下,可以救我一命:)docs.microsoft.com/en-us/rest/api/documentdb/…
    猜你喜欢
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 2016-10-31
    • 2014-11-29
    • 1970-01-01
    • 2016-11-03
    • 2020-09-06
    相关资源
    最近更新 更多