【问题标题】:How can I convert Lua HMAC SHA256 digest to a hexadecimal string (creates Facebook appsecret_proof token)?如何将 Lua HMAC SHA256 摘要转换为十六进制字符串(创建 Facebook appsecret_proof 令牌)?
【发布时间】:2014-07-03 08:11:54
【问题描述】:

我一直在阅读有关 Nginx 的 HTTPLuaModule 的信息,并发现开发人员可以通过一些很棒的方式使用键和字符串来SHA256 sign Amazon Web Services。作为 Lua 新手的初级开发人员,我想使用 HTTPLuaModule 生成 Facebook appsecret_proof 令牌。目前我发现 Lua 有 LuaCrypto module 通过 SHA256 生成 HMAC,但它与 Facebook 令牌所需的实现不完全匹配:

digest = crypto.hmac.digest('sha256', user-access-token, app-secret, true) ## what next to convert digest into hexadecimal string?

与上面的亚马逊示例不同,令牌不需要进行 Base64 编码,而是需要将 HMAC 转换为仅使用十六进制数字的双倍长度字符串(因此是十六进制!)。

在 Python 中,我可以通过以下方式获取令牌:

import hashlib import hmac token = hmac.new(app-secret, user-access-token, hashlib.sha256).hexadecimal()

想法?有没有更好的模块可以将摘要转换为十六进制字符串?

【问题讨论】:

    标签: facebook-graph-api lua hex sha sha256


    【解决方案1】:

    应该很简单:

    local secretProof = digest:final()
    

    来源:http://mkottman.github.io/luacrypto/manual.html#reference

    【讨论】:

    • 我无法相信我做了多少疏忽 - 我所要做的就是将 [raw] 标志切换为 false - digest = crypto.hmac.digest('sha256', user-access-token, app-secret, false),正如 documentation 中明确概述的那样。不过,感谢您向我指出上述方法-我将在其他地方需要它:-)
    猜你喜欢
    • 2012-02-15
    • 1970-01-01
    • 2018-08-31
    • 2013-02-07
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    相关资源
    最近更新 更多