我该如何将Lua HMAC SHA256摘要转换为十六进制字符串(创建Facebook应用程序appsecret_proof令牌)?

我一直在阅读有关 Nginx 的 HTTPLuaModule 的内容,发现开发人员已经找到了一些很好的方法,使用密钥和字符串可以用 SHA256 签名 Amazon Web 服务。作为一个 Lua 初学者的初级开发人员,我想使用 HTTPLuaModule 来生成 Facebook 应用程序的 appsecret_proof 令牌。目前,我发现 Lua 有 LuaCrypto 模块 可以用于生成 HMAC(SHA256),但它并不完全符合 Facebook 令牌所需的实现:

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

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

在 Python 中,我可以使用以下代码获取令牌:

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

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

点赞
用户353988
用户353988

应该很简单:

local secretProof = digest:final()

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

2014-07-02 22:35:33