繁体   English   中英

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

[英]Implement RSA Public / Private key decryption in .NET to Java / Spring

我正在尝试将应用程序从.NET移植到Spring 4(Java)。 如何使用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>

问题/ S:

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

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

您已经有了一个XML,其中包含构成私钥的元素。 这些元素均以base 64编码。 基数64解码为字节数组。 这些字节数组依次代表大或小的整数编码数字。 所有这些值共同构成了私钥。

显然,您已经更改了值本身,因此,要进一步扩展此范围将非常棘手。

因此,基本上,您需要执行以下步骤:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM