从 Java 中的已知参数创建 RSA 密钥
我正在致力于实施 Bing Cashback。为了验证来自 Bing 的传入请求是否有效,他们提供了签名。签名是使用 RSA 加密的 url 的 160 位 SHA-1 哈希值。
Microsoft 提供了 RSA“公钥”、模数和指数,我应该用它们来解密哈希值。
有没有办法像微软所说的那样创建解密哈希所需的 Java 密钥对象?
我能找到的所有内容都会自动创建 RSA 密钥对,因为这就是 RSA 的工作原理。如果可能的话,我真的很想使用 Java 对象,因为这显然比手工编码的解决方案更可靠。
他们提供的示例代码位于 .NET 中,并使用 .NET 库函数来验证哈希值。具体来说是 RSACryptoServiceProvider.VerifyHash()
I'm working on implementing Bing Cashback. In order to verify an incoming request from Bing as valid they provide a signature. The signature is a 160-bit SHA-1 hash of the url encrypted using RSA.
Microsoft provides the RSA "public key", modulus and exponent, with which I'm supposed to decrypt the hash.
Is there a way to create the Java key objects needed to decrypt the hash as Microsoft says?
Everything I can find creates RSA key pairs automatically since that's how RSA is supposed to work. I'd really like to use the Java objects if at all possible since that's obviously more reliable than a hand coded solution.
The example code they've provided is in .NET and uses a .NET library function to verify the hash. Specifically RSACryptoServiceProvider.VerifyHash()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 java.security.spec.RSAPublicKeySpec。它可以从指数和模数构造密钥。然后使用 java.security.KeyFactory.generatePublic() 并以密钥规范作为参数。
Use java.security.spec.RSAPublicKeySpec. It can construct a key from exponent and modulus. Then use java.security.KeyFactory.generatePublic() with key spec as a parameter.
像这样的事情应该可以解决问题:
这假设公钥以十六进制字符串形式给出,并且您需要 Apache Commons Codec 库
如果您有不同格式的密钥,请尝试 KeyFactory 了解更多信息。
Something like this should do the trick:
This assumes the Public key is given as a hex string, and you'll need the Apache Commons Codec library
If you have the key in a different format, try the KeyFactory for more information.