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

时间:2016-07-24 05:40:04

标签: java c# .net spring cryptography

我正在尝试将应用程序从.NET移植到Spring 4(Java)。如何使用以前使用.NET RSACryptoServiceProvider加密的Java进行密码解密?我来自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>

问题/ S:

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

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

1 个答案:

答案 0 :(得分:2)

您已获得包含构成私钥的元素的XML。这些元素是基于64位编码的。基数64解码为字节数组。这些字节数组又代表大整数或小整数编码数字。所有值一起组成私钥。

显然,你自己已经改变了这些价值观,所以进一步改善这一点是相当棘手的。

所以基本上你已经完成了以下步骤:

  • 解析XML;
  • 检索已编码的元素;
  • base 64将这些元素解码为字节数组;
  • 将数组转换为BigInteger
  • 将值放在RSAPrivateCrtKeySpec
  • 将规范提供给"RSA" KeyFactory

由于您还拥有私有D值,因此您也可以使用RSAPrivateyKeySpec,但生成的RSA操作可能会更慢。

相关问题