我正在实现必应返现功能。为了验证来自Bing的请求是否有效,他们提供了一个签名。该签名是使用RSA加密的URL的160位SHA-1哈希值。
微软提供了RSA“公钥”,包括模数和指数,以便我可以解密哈希。
是否有办法创建Java密钥对象以按照Microsoft的说法解密哈希?
我找到的所有内容都会自动生成RSA密钥对,因为这是RSA的工作方式。如果可能的话,我真的很想使用Java对象,因为这显然比手工编码的解决方案更可靠。
他们提供的示例代码是.NET的,并使用.NET库函数来验证哈希。具体来说,是RSACryptoServiceProvider.VerifyHash()。
n
和e
所需的BigInteger
,请使用new BigInteger(1, org.springframework.util.Base64Utils.decodeFromUrlSafeString((String) key.get("n")))
(或支持URL安全解码的其他Base-64库) - 强调将1
作为BigInteger
的signum
。 - Janaka Bandara