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

时间:2014-07-02 21:30:59

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

我一直在花时间阅读有关Nginx的HTTPLuaModule,并发现开发人员能够SHA256 sign Amazon Web Services使用密钥和字符串的一些好方法。作为一个Lua noob的初级开发人员,我想使用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()

思考?有哪些更好的模块可以将摘要转换为十六进制字符串?

1 个答案:

答案 0 :(得分:0)

应该如此简单:

local secretProof = digest:final()

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