Erlang 中字符串的 HMAC SHA256 十六进制摘要,怎么样?
我正在尝试与 Pusher.com 创建和维护的第三方实时网络消息传递系统进行交互b>.现在,我无法通过 API 发送任何内容,除非我生成数据的 HMAC SHA256 十六进制摘要
。用 ruby 编写的示例源代码可以尝试说明这一点:
# Dependencies # gem install ruby-hmac # require 'rubygems' require 'hmac-sha2' secret = '7ad3773142a6692b25b8' string_to_sign = "POST\n/apps/3/channels/test_channel/events\nauth_key=278d425bdf160c739803&auth_timestamp=1272044395&auth_version=1.0&body_md5=7b3d404f5cde4a0b9b8fb4789a0098cb&name=foo" hmac = HMAC::SHA256.hexdigest(secret, string_to_sign) puts hmac # >> 309fc4be20f04e53e011b00744642d3fe66c2c7c5686f35ed6cd2af6f202e445
我检查了 erlang 加密库,我什至无法“直接”生成 SHA256 十六进制摘要
我如何在 Erlang 中完成这一切?帮助....
* 更新 *
我在这里找到了解决方案: erlang 中的 sha256 加密 他们引导我erlsha2。但是,我如何从此模块生成 SHA256 hexdigest
输出的 HMAC
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 erlsha2,使用以下命令获取与 Ruby 代码等效的内容:
With erlsha2, use the following to get the equivalent of your Ruby code:
我自己偶然发现了这个问题,最后仅使用加密技术就成功了,所以我想分享一下。对于您的使用,我认为您需要:
:crypto.hmac(:sha256, Secret, string_to_sign) |> Base.encode16
hmac 部分应处理摘要 + hmac,然后通过管道编码 16 应提供十六进制部分。我想你可能不久前就离开了,但由于我也遇到了同样的问题,并且想尝试在 stdlib 中解决它,我想我会分享。
I just stumbled through this myself and finally managed it just using crypto, so thought I would share. For your usage I think you would want:
:crypto.hmac(:sha256, secret, string_to_sign) |> Base.encode16
The hmac portion should take care of digest + hmac and then piping to encode 16 should provide the hex part. I imagine you probably moved on some time ago, but since I just had the same issue and wanted to try and figure it out in stdlib stuff I thought I would share.
同一个项目(erlsha2)有一个用于此目的的模块:
https://github .com/vinoski/erlsha2/blob/master/src/hmac.erl
The same project (erlsha2) has a module for this:
https://github.com/vinoski/erlsha2/blob/master/src/hmac.erl
如果您使用Elixir,您可以使用
If you're using Elixir, you can use
这是一个单行代码(Erlang 24):
不需要外部库。
This is a one-liner (Erlang 24):
No need for external libs.