javascript中的HMAC SHA256十六进制摘要

Posted

技术标签:

【中文标题】javascript中的HMAC SHA256十六进制摘要【英文标题】:HMAC SHA256 hex digest in javascript 【发布时间】:2012-08-02 19:26:18 【问题描述】:

我正在尝试编写一个 javascript 库来将事件推送到 Pusher。

在我使用的环境中我不能使用 nodejs,所以不需要 require('crypto') ...或者至少我不知道在 node 之外使用它的方法。

我在这里遵循示例指南:http://pusher.com/docs/rest_api;我陷入了困境 它说我应该生成 HMAC SHA256 十六进制摘要。

我正在使用这个库http://code.google.com/p/crypto-js/#HMAC

所以,按照我写的 Pusher 上的说明进行操作

CryptoJS.HmacSHA256(
  'POST\n/apps/3/channels/project-3/events\nauth_key=278d425bdf160c739803&auth_timestamp=1272044395&auth_version=1.0&body_md5=7b3d404f5cde4a0b9b8fb4789a0098cb&name=foo',
  '7ad3773142a6692b25b8'
);

但这给了我20b132baa2aaf44ea1fab814f0788aaa44eed23a2d252c72e4dc2aaea0d6ac24 而不是b3152b2bb5a5b0bae66435a498797aa763e9b74f86cc97c9175424f8308b2f80

困扰我的是我没有做“十六进制摘要”部分,所以也许这就是我所缺少的,但我在 javascript 中找不到合适的库来执行此操作。 你发现我所做的任何错误吗?你有推荐的图书馆吗?

提前感谢您的帮助。

【问题讨论】:

十六进制摘要仅表示十六进制加密哈希,看起来您正在获取。不知道有什么问题... 是的,所以也许这只是我正在使用的数据的错误,问题是我几个月前在 Java 中编写了类似的东西并且它可以使用该数据,所以它是正确的。 hmmm... 我建议尝试second library 看看你是否得到不同的结果。 我正在尝试,谢谢。编辑:相同的结果。 如果您尝试其他库中的示例,您会得到与它们相同的输出吗? 【参考方案1】:

我一直在努力做同样的事情。 Pusher 的文档应该对这个问题更加清楚。事实证明这不是加密方法。这是您列出参数的顺序。您的邮件正文必须完全采用如下格式:

"data":"\\"message\\":\\"hello world\\"","name":"my_event","channel":"test_channel"

必须先是数据,然后是消息,然后是名称,最后是频道名称。

然后,当您创建身份验证签名时,您必须这样列出您的参数:

POST\n/apps/3/events\nauth_key=278d425bdf160c739803&auth_timestamp=1353088179&auth_version=1.0&body_md5=ec365a775a4cd0599faeb73354201b6f

所以首先是身份验证密钥,然后是时间戳,然后是身份验证版本,最后是正文 md5。

一旦我遵循了这个确切的模式,我就让它工作了。希望这会有所帮助!

【讨论】:

以上是关于javascript中的HMAC SHA256十六进制摘要的主要内容,如果未能解决你的问题,请参考以下文章

在HMAC SHA256中编码字符串[关闭]

hmac sha256和sha256的区别

hmac-sha256 2021-11-02

对于 PBKDF2,使用 HMAC-SHA256 是不是比使用 HMAC-SHA-1 更安全?

在 Ruby 中使用 HMAC SHA256

使用 HMAC-SHA256 的 Python 编码消息