当前位置: 首页 > 面试题库 >

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

池庆
2023-03-14
问题内容

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

Microsoft提供了RSA“公钥”,模数和指数,我应该使用它来解密哈希。

如微软所说,有没有一种方法可以创建解密哈希所需的Java密钥对象?

我能找到的所有内容都会自动创建RSA密钥对,因为RSA应该就是这样工作的。我真的很想使用Java对象,因为它显然比手工编码的解决方案更可靠。

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


问题答案:
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);


 类似资料:
  • 在本章中,我们将重点介绍使用Python逐步实现RSA算法。 生成RSA密钥 生成RSA密钥涉及以下步骤 - 创建两个大素数,即p和q 。 这些数字的乘积称为n ,其中n= p*q 生成与(p-1)和(q-1).相对素数的随机数(q-1). 将数字称为e 。 计算e的模逆。 计算的倒数将被称为d 。 生成RSA密钥的算法 我们需要两个使用Python生成RSA密钥的主要算法 - Cryptomat

  • 我在创建/使用在PHP中创建和使用的RSA密钥方面有一个问题。问题是,(公共和私人)密钥应该在不同的服务器之间交换(例如,当移动用户帐户时)。 现在,PHP的openssl库没有提供任何关于密钥创建格式的详细信息。最新文档位于http://php.net/manual/en/function.openssl-pkey-export.php只是声明它是“PEM格式”,但没有说明它是在PKCS#1还是

  • 我用RSA加密来加密C#中的一些数据。现在我想用Java解密加密的数据。但是我遇到了一些问题。 主要问题可能是将加密消息从c#获取到java。在c#中,我们有无符号字节,字节序是不同的 因此,为了进行测试,我将c#中加密数据的数组转换为数组并获得它的字符串表示形式。然后我将字节数组的字符串表示形式复制到我的java代码中并将其转换回“字节”数组。之后,我反转数组以匹配java的endianess。

  • 假设我有一个python结构,表示RSA密钥对,如下所示: 如何编写python代码来生成可用于验证使用此RSA私钥签名的JWT的JWK?使用的算法是RSA256。 这个网站mkjwk完成了我想做的事情。但我正试图用python代码来做到这一点。

  • 问题内容: 我正在尝试使用RSA私钥加密某些内容。 我遵循以下示例:http : //www.junkheap.net/content/public_key_encryption_java, 但将其转换为使用私钥而不是公共密钥。遵循该示例,我认为我需要做的是: 读取DER格式的私钥 生成PCKS8EncodedKeySpec 从KeyFactory调用generatePrivate()获得一个私钥

  • 问题内容: 我试图来回编码一个简单的String“ test”。 但是,尽管加密工作得很好(ALGORITHM是“ RSA”),但是当尝试解密刚刚从加密“ test”中获得的字符串时,出现以下异常: javax.crypto.IllegalBlockSizeException:数据不得超过256个字节 我是否应该将加密的字节分成256个块才能解密? 问题答案: 您无法可靠地将随机字节转换为。结果将