我一直在花时间阅读有关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()
思考?有哪些更好的模块可以将摘要转换为十六进制字符串?
答案 0 :(得分:0)
应该如此简单:
local secretProof = digest:final()
来源:http://mkottman.github.io/luacrypto/manual.html#reference