问题标签 [hmac]
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.
python - 为什么 hashlib 和 hmac 生成不同的哈希值?
在 Python 2.7 中,
输出,
还是我误解了?
silverlight - Windows Phone 7 / Silverlight 上的 HMAC MD5
我正在尝试在 Windows Phone 7 上生成 HMAC_MD5 算法。正如我发现的那样,HMACMD5 类在 WP7 中没有实现。另一方面,我找到了一个 MD5 Silverlight 库 ( http://archive.msdn.microsoft.com/SilverlightMD5 ),但我无法根据预定义的密钥生成新的 MD5 签名。有什么提示吗?谢谢,亚历克斯
windows - 如何在 Windows 上计算 HMAC SHA?
我需要在 Windows 上的程序中计算 HMAC SHA。该程序之前用于在使用 openssl 的 linux 上运行。现在我需要将它移植到 Windows,但我不确定 Windows 平台 SDK 是否提供任何方法来计算 HMAC SHA。
我在 msdn 上浏览了以下链接,但我不确定 - http://msdn.microsoft.com/en-us/library/aa382453(v=VS.85).aspx。
让我知道对我来说最好的方法是什么。现有程序在 C 中。
wcf - IIS 在 WCF 服务调用后在重定向时转储授权标头而不使用斜杠
我正在组合一个在 IIS 7 网站实例中运行的 WCF REST 服务,并且我正在使用HMAC身份验证方案,该方案将令牌和 HMAC 插入到身份验证标头中。典型请求的示例标头列表可能如下所示:
我使用路由而不是 .svc 文件设置了服务,所以我的 Global.asax 看起来像这样:
问题是,当使用这样的路由声明服务时,如果 IIS 收到对没有尾部斜杠WebGet
的uri的调用,它会执行 307 重定向到带有尾部斜杠的 uri。您会认为这很有帮助,但问题是重定向转储了 Authorization 标头。
我的服务课程都是犹太洁食,在其他各个方面都做得很好。有没有办法让我能够在重定向的情况下维护该 Authorization 标头?我怀疑解决方案将是一个 IIS 配置问题,尽管我想我可以放置各种路由黑客来获取 uri 的无斜线版本。
更新:
我发现这篇文章验证了这种行为,但并没有真正给出任何修复。
url - 使用 HMAC 或 OpenSSL 进行 URL 签名
我对 url 签名感兴趣(例如http://.../?somearg=value&anotherarg=anothervalue&sig=aSKS9F3KL5xc),但我有一些要求让我没有解决方案。
- 我将使用其中一个
PHP
或Python
用于页面,因此我需要能够使用两者之一来签名和验证签名。 - 我的计划是使用 priv/pub 密钥方案对一些数据进行签名,并能够验证签名是否有效,但这就是复杂的地方:
- 验证发生时数据未知(不仅仅是
somearg=value&anotherarg=anothervalue
)
我的第一直觉是使用 OpenSSL,例如使用 RSA 密钥对,按照以下方式进行操作:签名:openssl rsautl -sign -inkey private.pem -in sensitive -out privsigned
并仅基于privsigned
数据和密钥进行验证:openssl rsautl -verify -inkey public.pem -in privsigned -pubin
。
使用 PHPopenssl_get_privatekey()
并openssl_sign()
签署数据就好了,但我需要知道(解密!)数据才能验证(我不会有):openssl_get_publickey()
和openssl_verify($data, $signature, $pubkeyid);
来自http://php.net/openssl_verify。
或者我在这里错过了什么?
Python
所以我研究了 HMAC,但尽管和中都有许多散列函数,但PHP
我对如何验证散列感到困惑。
PHP
'shash_hmac()
允许我使用“键”(或在本例中为字符串键)创建散列。但是我如何去验证一个散列是有效的(即&sig=
不只是由最终用户手动输入&sig=abcdefg1234
。
总结一下(对不起,问题太长了):我如何验证我的服务器的(证书/字符串)密钥是否已生成签名/哈希(假设我无法通过重做所述数据的哈希来验证)?对于我应该选择哪条路线,Priv/pub-key 还是 HMAC,你有什么偏好吗?
非常感谢任何大小的指针!提前致谢,
- 乔什
java - Android HMAC-SHA1 与标准 Java HMAC-SHA1 不同
我在 android 上遇到了一些 HMAC 问题。我正在使用带有以下代码的 SHA1 算法,这些代码在搜索 android hmac-sha1 时显示在整个网络上。
为了测试这段代码,我用它创建了一个简单的标准 Java 程序(当然用 System.out.println 调用替换了 Log.v 调用),这样我就可以与 android 版本进行比较。在这两种情况下,我都对 base_string 和 key 使用相同的测试值。
此外,我还使用一些 PHP 函数和验证服务器(使用一些 OAuth 令牌)验证了标准 Java 的编码结果。该代码在标准 Java 程序中运行良好,但在 Android 程序中无法运行。我做了很多搜索,无法弄清楚什么是错的。有人经历过吗?
以下是标准 java 和 android 的结果...
- Java(和 PHP):
fH/+pz0J5XcPZH/d608zGSn7FKA=
- 安卓程序:
fH/vv73vv709Ce+/vXcPZH/vv73vv71PMxkp77+9FO+/vQ==
仔细研究一下,我确信它是 hmac 函数而不是 Base64 编码,因为比较那些 hmac 值 Android 版本与 Java 程序相比,它有各种额外的空格和其他未知字符符号。
任何帮助表示赞赏!
php - HMAC算法的关键
如何生成 HMAC 算法的密钥,因为我必须使用它在其他客户端进行数据验证?
提前致谢。
c++ - python 脚本可以解密在 C++ 程序中创建的 HASH 吗?
我有一个比赛,人们可以使用他们在 Android 应用程序中发现的密码参加比赛。我选择确保只有购买了该应用程序的人才能参加比赛的方法是使用带有 HMAC SHA256 的共享秘密编码(加密?)。
所以我的秘密将在 Android 应用程序中用 C 加密(使用 Crypto++,你有什么更好的 SHA 库的建议吗?我发现 Crypto++ 真的很难使用)。
这只是一个例子:
因此,当用户发现密码时,他们将被带到网页(python 脚本),HMAC 加密的共享密码将作为 CGI 参数传递:
http://mysite/competition.py?encodedSecret=3dfdfdg343jkfjk390kl
然后我的 python 脚本将查看 CGI 参数并对其进行解密以获取共享密钥(以验证比赛条目是否来自拥有该应用程序的用户)和密码(以查看用户是否赢得了任何东西)。
我的问题是: python 脚本(使用 hashlib 模块)是否可以解密使用 Crypto++ 在 C 中加密的内容?
java - 用于签名计算的 HMAC-SHA256 算法
我正在尝试使用 HMAC-SHA256 算法创建签名,这是我的代码。我正在使用美国 ASCII 编码。
我从上面的代码得到的结果是:
这与wiki中显示的相同
除了0x
. _
如果我做的一切都正确,或者我可以改进我的代码,我正在寻找想法/评论。
java - 来自 Java 的 Ruby 中的 HMAC
我正在尝试在 ruby 中编写具有以下 java 函数:
我添加了 System.out.println,这是输出:
现在在红宝石中我尝试
没有一个哈希匹配,我知道这与编码等有关。如何匹配 java HMAC ?