问题标签 [hmacsha1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
219 浏览

java - http OAuth 响应错误

我的日志猫:

The signed key(sw) is https://api.dropbox.com/1/shares/dropbox/a.jpg?oauth_consumer_key=2f2y1dyuqhp58ek&oauth_token=wz27t6thob0fbxl&oauth_nonce=1340648163&oauth_timestamp=1340648163&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&oauth_signature=bo%2F5zuowvX%2Fcjy5uPP5ZPjUiP64% 3D%0A

我对http没有太多经验..

因为 httpPost = new HttpPost(sw); 工作正常,这是否意味着基本字符串签名是正确的?

还是我错过了什么?

0 投票
1 回答
1609 浏览

php - hash_hmac - sha1 - 有符号值出错?

api_secret 的值为

结果 $signData 的值为

ZTYxM2NkYmNhZDJiZDUxZWUwMWIyNGRlZTlmYTc3MDliM2FiY2NhYQ==

但 $signData 的预期结果是

QbOd8%2BOIzHMKrmEpf4G%2FZFWLAx8%3D

我应该将此预期结果用于 url 连接。

我在哪里做错了?帮我。

0 投票
1 回答
1699 浏览

java - php 和 java hmac_sha1 哈希不一样

我正在尝试将一条消息散列到用 php 编写并由 HMAC_SHA1 算法编码的服务器端(我无法更改他的代码)。我正在用 Java 编写代码。php代码如下:

我的Java代码是:

我遵循了 php 代码中使用的每种散列方法,并且按照您所看到的相同顺序。也许java中有一个函数在php中工作不同?

我正在使用 - com.sun.org.apache.xml.internal.security.utils.Base64 java.net.URLEncoder、javax.crypto 和 org.apache.commons.codec.binary

谢谢!

0 投票
2 回答
901 浏览

php - 根据 Amazon S3,PHP 和 CF 的 SHA1 错误

Amazon 始终生成与 PHP 或 CF 不同的哈希,这会导致持续的“SignatureDoesNotMatch”错误。

根据文档,GET 请求 [没有 REST 标头] 的签名如下:

示例数据:

  • 秘密访问密钥:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
  • Content-MD5 和 Content-Type:(可选 - 跳过)
  • CanonicalizedAmzHeaders:(无标题 - 跳过)
  • 资源:johnsmith.s3.amazonaws.com/photos/puppy.jpg
  • 规范化资源:/johnsmith/photos/puppy.jpg

提供了两个示例:

  1. 过期1175139620 ; 签名:rucSbH0yNEcP9oM2XNlouVI3BH4%3D
  2. 过期1141889120 ; 签名:vjbyPxybdZaNmGa%2ByT272YEAiv4%3D

要重新创建这个(CFHMAC from here):

除了两种语言返回的 $signature 是:

  1. 过期1175139620 ; 签名:NpgCjnDzrM%2BWFzoENXmpNDUsSn8%3D
  2. 过期1141889120 ; 签名:fScKGHCDI0NY5E7CYp9Vc8VKMbY%3D

我们一直小心其他人提到的这些陷阱:

  1. hash_mac 有第三个参数 raw,它必须设置为 true。
  2. S3 伪代码中 stringToSign 和 key 的顺序应该颠倒。
  3. 整个 stringToSign 必须在一行上(以免创建额外的换行符)。

编辑:根据 Leigh 的回答更新了 CF 代码中的换行符;现在 CF 匹配 PHP。

我显然做错了什么,但不知道是什么。
[我听说 Amazon S3 会被称为 CSS——“复杂的存储服务”,但这个名字已经被人使用了!]

请帮忙!

0 投票
0 回答
3782 浏览

java - 在 Java 中使用 Base64 HMAC SHA1 未获得预期结果

我正在尝试使用 HMAC SHA1 单向算法

这是我的代码

输出是

十六进制:83d3ab27ca50358a6b9d7b813c55dc8abaeaa711 BASE64:ODNkM2FiMjdjYTUwMzU4YTZiOWQ3YjgxM2M1NWRjOGFiYWVhYTcxMQ==

预期 BASE64:g9OrJ8pQNYprnXuBPFXcirrqpxE=

我使用这些在线网站定义了我的期望

http://hash.online-convert.com/sha1-generator

文本=编码

使用共享密钥

键=MSbN2crsrdTEsLetTixpV46q+fTZotdZjwoEpO62vYk=

我得到的结果略有不同

十六进制:83d3ab27ca50358a6b9d7b813c55dc8abaeaa711 十六进制:83D3AB27CA50358A6B9D7B813C55DC8ABAEAA711 h:e:x: 83:d3:ab:27:ca:50:35:8a:6b:9d:7b:81:3c:575:dca:a:a:8 11 base64: g9OrJ8pQNYprnXuBPFXcirrqpxE=

如您所见,十六进制输出匹配 100%,但是 base64 输出根本不匹配

为了验证问题不在那个站点,我去了另一个站点,只是为了使用 base64 对十六进制字符串进行编码,然后我又得到了相同的结果......

http://tomeko.net/online_tools/hex_to_base64.php?lang=en

任何人都知道为什么会这样?

提前致谢!

0 投票
1 回答
638 浏览

oauth - Google Apps 脚本是否支持签名的 OAuth 请求?

OAuth 希望消费者使用 HMAC-SHA1 或 RSA-SHA1 等哈希对“受保护资源”的请求进行签名。

Google Apps 脚本是否支持请求散列?我是 RTFM,并尝试了演示(https://developers.google.com/apps-script/articles/twitter_tutorial),但是......没有乐趣。

提前致谢!

0 投票
1 回答
3185 浏览

delphi - Indy HMAC-SHA1 生成意外值

我正在尝试使用使用 OAuth 1.0a 并需要 HMAC-SHA1 进行签名的第 3 方服务。我用 C# 编写了一个工作版本,并尝试将其移至 Delphi XE2。我立即注意到出了点问题,服务器拒绝了我的电话,说我的“签名无效”。这是我生成签名的方法:

我看不出有什么不对劲的地方,所以我从我的 C# 测试中拿了一个signatureBaseandkey

签名库:POST&https%3A%2F%2Fapi.twitter.com%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Flocalhost%252Fsign-in-with-twitter%252F%26oauth_consumer_key%3DcChZNFj6T5R0TigYB9yd1w%26oauth_nonce%3Dea9ec8429b68d6b77cd5600adbbb0456%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318467427%26oauth_version%3D1.0

钥匙:L8qq9PZyRg6ieKGEKhZolGC0vJWLw8iEJ88DRdyOg&

在 C# 中使用这些值,我得到了签名F1Li3tvehgcraF8DMJ7OyxO4w9Y=,这是 Twitter 给我的预期值。然而,在德尔福,我得到了签名/kov410nJhE6PTlk0R8bjP7JQq4=

在 Delphi 中,我这样调用我的函数:

所以我的问题是:我是否错误地使用了 HMAC-SHA1?如果是这样,我应该采取哪些步骤来修复它?如果不是,那么在 Indy 中 HMAC-SHA1 的实现是否不正确?如果是这样,是否有一个易于使用(最好是免费的)单元可以正确处理它?还是这里有其他完全错误的地方?

0 投票
2 回答
778 浏览

java - Java 和 C++ 中的 HMAC 摘要不同

我正在尝试集成 2 个系统,一个使用 C++,另一个使用 Jva 来生成 HMAC 摘要。

以下是 C++ 代码:-

生成的 HMAC 为 9B2D06D314018A5134EA1CF54D5A9F20CECC473965BD9801AAC9D4868EF39D38

szSeed 是 0.4726005982213448 szStr 是 test@test.com

以下是Java代码:-

结果 HMAC 为 f91b07623fea970b5f9d1f5d83f850b3a6077c0e80f42b574a01d861143eac09

两者的 HMAC 是不同的。

如何解决这个问题?

感谢您的关注!

0 投票
0 回答
380 浏览

iphone - 带有 Web 服务的 iPhone 和 HMAC-SHA1

这是我关于stackoverflow的第一个问题,所以请温柔。我正在与我的 iphone 应用程序中的网络服务进行通信,并且需要验证我对主机的请求。我需要做的是获取 url ex。“GET http://api.host.com/ ”连同一个通过类运行它并生成 HMAC-SHA1 哈希以验证我的身份的密钥。我在stackoverflow上尝试了一些例子,但我没有找到任何对我有用的例子。我得到了 .NET 类的示例代码,它可以完成我需要它做的事情,现在我需要类似的东西,它可以在 Xcode 中用于 iphone 应用程序。这是 NET 示例代码:

因此,如果有人可以帮助我为 Xcode 提供类似的类/功能,那就太好了。

此致

哈坎

0 投票
1 回答
1591 浏览

php - 如何在 PHP 中将 hmacsha1 键设置为十六进制?

我能够使用以下代码成功获取 HMAC SHA1 签名密钥:

产生:

但是,我正在与之合作的地方却期待这个:

我尝试了一个在线工具,看来两者之间的区别在于与我一起工作的人期望使用 HEX 类型的签名密钥。

为了输出 HEX 类型,我需要添加一些东西到我的 PHP 中吗?