从Java中的已知参数创建RSA密钥

mel*_*ger 15 java encryption rsa bing

我正在努力实施Bing Cashback.为了验证来自Bing的传入请求是有效的,他们提供签名.签名是使用RSA加密的URL的160位SHA-1哈希.

Microsoft提供了RSA"公钥",模数和指数,我应该用它来解密哈希.

有没有办法创建解密哈希所需的Java密钥对象,正如微软所说的那样?

我能找到的所有东西都会自动创建RSA密钥对,因为这就是RSA应该如何工作的.如果可能的话,我真的很想使用Java对象,因为这显然比手动编码解决方案更可靠.

他们提供的示例代码是在.NET中,并使用.NET库函数来验证哈希.特别是RSACryptoServiceProvider.VerifyHash()

eri*_*son 28

RSAPublicKeySpec spec = new RSAPublicKeySpec(modulus, exponent);
KeyFactory factory = KeyFactory.getInstance("RSA");
PublicKey pub = factory.generatePublic(spec);
Signature verifier = Signature.getInstance("SHA1withRSA");
verifier.initVerify(pub);
verifier.update(url.getBytes("UTF-8")); // Or whatever interface specifies.
boolean okay = verifier.verify(signature);
Run Code Online (Sandbox Code Playgroud)