从.NET到Java/Spring实现RSA公钥/私钥解密

本文关键字:RSA 公钥 私钥 解密 实现 Spring NET Java | 更新日期: 2023-09-27 17:58:19

我正在尝试将一个应用程序从.NET移植到Spring 4(Java)。如何在Java中解密以前使用.NET RSACryptoServiceProvider加密的密码?我有Java背景。

我有一个来自.NET的privatekey.xml文件。这是私钥样本代码:

<RSAKeyValue>
<Modulus>dfgkjkdfg99444</Modulus>
<Exponent>ABCD</Exponent>
<P>dadskfkkeej3434j==</P>
<Q>sdakfksa/sdfd/sdf3wfsd==</Q>
<DP>sdERfdsf333==</DP>
<DQ>sdfsd222sdfEWEf==</DQ>
<InverseQ>kadkfimmds+/sdkks+/sdfsdkKKD==</InverseQ>
<D>sdfsadfsadfsadfdsafasdfsadfsadfdsafdsf=</D>
</RSAKeyValue>

问题:

这里面真正的私钥在哪里?我可以用它作为盐来解密加密的文本吗?如何使用这个私钥在Java中编写解密函数?Java中是否已经有一个函数接受这些参数?有什么例子吗?

我已经阅读了许多关于RSA的理论文章。但对理解这种情况没有帮助。因此,专门用java处理这个场景的示例代码、java中的计数器部分示例、有用文章的链接等将非常有用

从.NET到Java/Spring实现RSA公钥/私钥解密

您得到了一个包含组成私钥的元素的XML。这些元素是64进制编码的。基64解码为字节阵列。这些字节数组依次表示大整数或小整数编码的数字。所有的值一起构成私钥。

显然,你已经改变了价值观本身,所以再进一步就相当棘手了。

因此,基本上您需要完成以下步骤:

  • 解析XML
  • 检索编码的元素
  • 基64将这些元素解码为字节阵列
  • 将数组转换为BigInteger
  • 将值放入RSAPrivateCrtKeySpec
  • 将规范馈送到CCD_ 3 CCD_

由于您也有专用D值,因此您也可以使用RSAPrivateyKeySpec,但生成的RSA操作可能较慢。