RSA加解密含java版互转
RSA加解密含java版互转
朝如青丝暮成雪 发表于9个月前
RSA加解密含java版互转
  • 发表于 9个月前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

下面是RSA的帮助类文件封装

http://git.oschina.net/awith/RSAHelper

最近公司项目做Socket对接接口,对方是java写的,密钥什么的都是java版本,在c#上需要进行转换,对接起来真是麻烦死人,记录下来,以后用到用来参考。

注意:不排除封装的RSAHelper有BUG。

我也先声明下RSA的使用方法:

公钥加密,私钥解密。

公钥验签,私钥签名。

问题1:在java中签名时候有个SHA1withRSA进行签名,这个签名就是用SHA1的Hash值就行了,在c#中通常是MD5进行签名,因此采用的是MD5的Hash值。

问题2:注意加解密、和签名时需要不需要进行Base64加解密,我封装的这个里面全部没有采用Base64加解密,但在c#大部分都会采用Base64加解密。

问题3:密钥的转换,java版本和c#版本的密钥是不一样的,需要注意。RSAHelper中有密钥转换的方法。

基于封装的RSAHelper写个实例:

//签名

//得到hash描述_msg是要参与签名的文本,
byte[] hashData = RSACryption.GetSHA1Hash(_msg);

//得到签名域值
byte[] signData = RSACryption.RSASignData(conf.MyPrivKey, hashData);

//验证签名
bool temp = RSACryption.RSAVerifySign(conf.MSPubKey, HashData, signDataByte);

 //得到密文

RSACryption.RSAEncrypt(conf.MSPubKey, _msg);

//解密
string msg = RSACryption.RSADecrypt(conf.MyPrivKey, msgByte);

 

c#和java公私钥互转就不写了,很简单。不过需要Nuget一个BouncyCastle

注意加密格式和形式一般不会出现什么问题.

 

 

 

 

标签: C# RSA
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 2
博文 29
码字总数 11394
×
朝如青丝暮成雪
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: