C#和Java实现互通的RSA&DES加解密算法(一)

本文详细介绍了如何在C#和Java之间实现RSA和DES加解密算法的互通。重点解决了公私钥兼容及字符编码统一问题,提供了C#代码示例,包括生成公私钥、RSA加解密、SHA1withRSA签名验证以及DES加解密等关键步骤。
摘要由CSDN通过智能技术生成

近期因项目的需要,研究了一下C#和Java实现的前后台程序间的数据加解密算法。从网上检索的信息看,说这两种语言实现的RSA算法交互方面存在问题的帖子比较多。仔细分析并亲手实践了一下,发现问题没有想象的那么困难,只要解决好以下2个问题,基本就OK了。

首先,要解决公私钥问题,找出在C#和Java中可以通用的公私钥(或相互转换的方法)。

其次,要统一字符编码,否则会出现汉字乱码的现象。

再次,没有了吐舌头

好了,废话少说,直接上代码。


1 C#部分

1.1 生成公私钥

CspParameters cpSend = new CspParameters();
cpSend.KeyContainerName = "MyKeyContainerName";
RSACryptoServiceProvider rsaSend = new RSACryptoServiceProvider(cpSend);
string str_public = rsaSend.ToXmlString(false);
string str_private = rsaSend.ToXmlString(true);


str_public/str_private为符合xml格式的字符串,示例如下:

str_public=

<RSAKeyValue>    <Modulus>ztZzQktkd9e3W8wufPfrAwoDC672Xn8TjAOhn5+FfVtZHl+0KDEhIiPwQxXzw0wRZ09uN8tXcp80G7fIPOTEFdR21YNHas6NUQlglTUKK2y1V3bmgKD4OHQxVAeziCbUgwd4Ix422up4b+JkVG1b4IM7Ss51vuaa5S3tQAEqVVM=</Modulus>
    <Exponent>AQAB</Exponent>
</RSAKeyValue>

str_private=

<RSAKeyValue>
 <Modulus>ztZzQktkd9e3W8wufPfrAwoDC672Xn8TjAOhn5+FfVtZHl+0KDEhIiPwQxXzw0wRZ09uN8tXcp80G7fIPOTEFdR21YNHas6NUQlglTUKK2y1V3bmgKD4OHQxVAeziCbUgwd4Ix422up4b+JkVG1b4IM7Ss51vuaa5S3tQAEqVVM=</Modulus>
    <Exponent>AQAB</Exponent>
    <P>6OxLhbx4oNhlrjl36VVu0CIsbTo8BMzqdfh/v7IA0PBdFkh4OxZ2axJIHs+7z4YcGM06jTHoGqbbnX77D1yKUw==</P>
    <Q>41SLUOvL6v3ogJDzRKO8QfOC4nAANdG2tDBw7aT6fTvqInH1RBocZRopUi6CuscRcOljgFQuhRrR5V7Eje+pAQ=&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值