我正在尝试将应用程序从.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中的反例部分示例,有用文章的链接等将非常有用。
答案 0 :(得分:2)
您已获得包含构成私钥的元素的XML。这些元素是基于64位编码的。基数64解码为字节数组。这些字节数组又代表大整数或小整数编码数字。所有值一起组成私钥。
显然,你自己已经改变了这些价值观,所以进一步改善这一点是相当棘手的。
所以基本上你已经完成了以下步骤:
BigInteger
值RSAPrivateCrtKeySpec
"RSA"
KeyFactory
。由于您还拥有私有D
值,因此您也可以使用RSAPrivateyKeySpec
,但生成的RSA操作可能会更慢。