.NET和java的RSA互通,仅此而已

本文介绍了如何实现.NET和Java之间的RSA加密互操作。通过使用相同的填充算法PKCS1Padding,可以轻松地在两个平台上进行加密和解密。示例代码分别展示了.NET加密、Java解密以及Java加密、.NET解密的过程,强调了公钥和模的Base64编码处理以及在不同平台间保持加密标准的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.NETjavaRSA互通,仅此而已

在开始这篇文章之前,先请读者朋友阅读老唐的这两篇文章:

1Java.Net环境下RSA加密解密交互不成功的问题解决

2Java.Net环境下RSA加密解密交互不成功的问题解决【续】

和我的这篇文章

3.NET_RSA加密全接触(重、难点解析)

 

         前面老唐的两篇文章中提到,要想实现.NETJavaRSA互通,只能抛弃.NET现有的加密算法,而是利用 http://www.codeproject.com/csharp/biginteger.asp 项目中的BigInteger类(.NET Framework4中已增加了这个类的实现,在System.Numberic命名空间中),这个BigInteger类实际上就是仿照着javaBigInteger类来写的。

利用这个类的确可以很好的实现RSA的加解密,比如,在.NET端,构建一个公钥对应的BigInteger  e、一个模对应的BigInteger n和一个明文对应的BigInteger  m,然后执行语句BigInteger c=m.modPow(e,n),便可以实现加密操作,密文为c,这样的加密是标准加密,没有附加任何填充算法的加密。

老唐的文章中说,不能互通是因为加密标准不一样,导致一方加密而另一方不能解密,其实不然,.NET采用的加密标准是PKCS1Padding(或OAEPPadding——只支持XP以上版本),这也是我在前面一篇文章中提到的一种填充算法,而java同样支持这一填充标准,既然可以遵循统一的标准,那么.NETjavaRSA互通,无需添加任何新代码便可以轻松实现!

请看下面的示例(.NET端加密,Java端解密):

Java端代码:

 

Java端演示截图

 

.NET端代码:

.NET端演示截图:

 

接下来的示例是(java端加密,.NET端解密):

.net端代码:

Java端代码:

  

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值