日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c rsa java私钥_RSA,JAVA私钥加密,C#公钥解密

發布時間:2025/3/12 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c rsa java私钥_RSA,JAVA私钥加密,C#公钥解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

做這個東西在坑里爬了3天才爬出來,記錄下供園友參考。C#程序員一枚,項目需要和Java做數據交互,對方甩了段密文和一個CER證書給我,然后我要對其密文進行解密。 RSA 非對稱加密,對方用私鑰加密,我用公鑰解密。關于證書的一點說明:證書類型有兩種 .pfx 和 .cer ,其中 .pfx 證書既包含公鑰也包含私鑰, 而 .cer 證書只包含公鑰。

C#默認RSA只支持公鑰加密,私鑰解密。而現在的需求正好相反,因此想要直接用C#內置加密類肯定是行不通的。而且C#和Java的RSA加密并不互通。經過多方資料查找,采用第三方類庫 BouncyCastle?實現了當前需求。具體來看代碼,這里貼出主要代碼段:

1. 從cer證書中讀取公鑰。C#中的公鑰格式是xml格式的字符串,與java中的公鑰格式是不一樣的。

///

///從證書中獲取公鑰///

///

///

private string GetPublicKeyFromCer(stringcerPath)

{

X509Certificate2 pubcrt= newX509Certificate2(cerPath);

RSACryptoServiceProvider pubkey=(RSACryptoServiceProvider)pubcrt.PublicKey.Key;return pubkey.ToXmlString(false);

}

2. 將C#格式公鑰轉換成Java格式公鑰

///

///將C#格式公鑰轉成Java格式公鑰///

///

///

public static RsaKeyParameters RSAPublicKeyDotNet2Java(stringpublicKey)

{

XmlDocument doc= newXmlDocument();

doc.LoadXml(publicKey);

BigInteger m= new BigInteger(1, Convert.FromBase64String(doc.DocumentElement.GetElementsByTagName("Modulus")[0].InnerText));

BigInteger p= new BigInteger(1, Convert.FromBase64String(doc.DocumentElement.GetElementsByTagName("Exponent")[0].InnerText));

RsaKeyParameters pub= new RsaKeyParameters(false, m, p);returnpub;

}

3. 公鑰解密。因為對方給的密文是經過base64編碼的,所以要先解碼。而且加密填充模式要設置成和java那邊的一致,我這里設置的是 "RSA/ECB/PKCS1Padding"。

///

///公鑰解密///

/// C#格式公鑰

/// 密文

///

public static string RSADecryptByPublicKey(string xmlPublicKey, stringstrEncryptString)

{//得到公鑰

RsaKeyParameters keyParams =RSAPublicKeyDotNet2Java(xmlPublicKey);//參數與Java中加密解密的參數一致

IBufferedCipher c = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding");//第一個參數 true-加密,false-解密;第二個參數表示密鑰

c.Init(false, keyParams);//對密文進行base64解碼

byte[] dataFromEncrypt =Convert.FromBase64String(strEncryptString);//解密

byte[] outBytes =c.DoFinal(dataFromEncrypt);//明文

string clearText =Encoding.Default.GetString(outBytes);returnclearText;

}

以上代碼都依賴于?BouncyCastle 使用前記得先添加引用。為什么這樣一個問題在坑里呆了3天呢?原因是Java那邊返給我的密文格式是錯誤的,導致我怎么也解不出來。當時那個急的,還以為Java和C#實現不了互通加解密呢!最后這個問題還是我自己找出來的,丟了張截圖給他們

就是這個原因,導致我加了兩天班.... 當你解密時遇到 Unknown block type 錯誤時,很大可能性就是編碼的問題,即密文的格式不正確。

總結

以上是生活随笔為你收集整理的c rsa java私钥_RSA,JAVA私钥加密,C#公钥解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产大片黄| 国产视频一区二区在线 | 91国偷自产一区二区三区观看 | 人妻少妇精品视频一区二区三区 | 国产页 | 日韩美女av在线 | 欧美永久 | 中文字幕.com | 精品偷拍一区 | 性高潮久久久久久久 | 久久国产加勒比精品无码 | 糖心视频在线 | 日本成人精品在线 | 日韩精品一区二区三区丰满 | 李华月全部毛片 | 亚欧洲精品在线视频 | 亚洲欧美日韩系列 | 免费网站观看www在线观看 | 99色综合网| 韩国视频一区二区三区 | 亚洲自拍色 | 黄色大片免费的 | jizz亚洲女人高潮大叫 | 日本福利一区二区三区 | 午夜av免费 | 精品无码久久久久久久久果冻 | 国产精品成人免费看片 | 久久久久久久久久99 | 伊人网色 | 亚洲精品一区二区三区婷婷月 | 在线黄网 | 毛片99| 精产国品一二三区 | 成人欧美一区二区三区黑人动态图 | 亚洲一级片网站 | 成年人免费观看网站 | 小视频在线 | 激情文学综合网 | 亚洲乱子伦 | 精品一区91| 最近中文在线观看 | 小泽玛利亚一区二区三区视频 | 亚洲精品久久久久国产 | 欧美成人国产精品高潮 | 欧美成人免费在线观看视频 | 亚洲色视频 | 亚洲香蕉av| 夜夜爽日日澡人人添 | 欧美色资源 | 中文在线字幕av | 国产高清色 | 99精品视频在线观看 | 国产在线视频资源 | 91叉叉叉| 成人精品在线 | 欧美日韩国产一区二区 | 好吊色欧美一区二区三区视频 | 日韩福利在线视频 | 女性爱爱视频 | 丰满人妻一区二区三区四区53 | 欧美日韩一区二区三区四区五区 | 欧美日本国产在线 | 国产精品99无码一区二区视频 | 成人免费激情视频 | 琪琪色综合网 | 日韩欧美中文字幕一区二区三区 | 亚洲视频精品在线 | 日本不卡视频一区 | 美女爆乳18禁www久久久久久 | av五月 | 黄色xxxx| 久久久精品国产sm调教网站 | 久久精品av | 9久9久9久女女女九九九一九 | 中文av一区二区三区 | 91视频亚洲 | 国产美女性生活 | 毛片网页 | 久久国产网站 | 久久成人网18网站 | 久久久无码精品亚洲国产 | 亚洲青青草原 | 美女扒开内看个够网站 | 在线sese| 色婷婷777| 精品久久久久久久久久岛国gif | 关之琳三级全黄做爰在线观看 | 热播网 | 日本精品三级 | 欧美成人免费观看视频 | 综合久久亚洲 | 一区二区日韩电影 | 蜜臀一区| 手机看片91 | 香蕉在线视频播放 | 精品久久久久久无码中文野结衣 | 在线视频播放大全 | 欧美sese| 中字幕视频在线永久在线观看免费 |