亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

System.Security.Cryptography.CryptographicEx

系統(tǒng) 2269 0

在使用C#的不對(duì)稱加密 RSACryptoServiceProvider 類的時(shí)候,會(huì)遇到異常:System.Security.Cryptography.CryptographicException: The data to be decrypted exceeds the maximum for this modulus of 128 bytes. 異常詳細(xì)信息:?System.Security.Cryptography.CryptographicException:?要解密的數(shù)據(jù)超過(guò)此模塊的最大值?128?字節(jié)。 錯(cuò)誤發(fā)生在 rsa.Decrypt 這一行。通常不對(duì)稱加密的過(guò)程:1. A端數(shù)據(jù)用公鑰加密,通過(guò)網(wǎng)絡(luò)傳輸 2. B端用私鑰解密這些數(shù)據(jù)。但.net中的rsa加密最多只能對(duì)117字節(jié)數(shù)據(jù)進(jìn)行操作(128位減去隨機(jī)數(shù)),導(dǎo)致128位數(shù)據(jù)不得不分兩部分進(jìn)行處理,于是加密數(shù)據(jù)不斷膨脹。更多詳細(xì)討論參考 StackOverflow這 個(gè)帖子。

解決辦法

在CodeProject上有一篇 文章 , 可以很好的解決這個(gè)問(wèn)題,先下載BigInteger class。

RSAHelper
???? public ? static ? class ?RSAHelper
????{
???????? /// ? <summary>
????????
/// ?RSAs?the?encrypt.
????????
/// ? </summary>
????????
/// ? <param?name="datatoencrypt"> The?datatoencrypt. </param>
????????
/// ? <param?name="exponent"> The?exponent. </param>
????????
/// ? <param?name="modulus"> The?modulus. </param>
????????
/// ? <returns></returns>
???????? public ? static ? byte []?RsaEncrypt( byte []?datatoencrypt,? byte []?exponent,? byte []?modulus)
????????{
???????????? var ?original?=? new ?BigInteger(datatoencrypt);
???????????? var ?e?=? new ?BigInteger(exponent);
???????????? var ?n?=? new ?BigInteger(modulus);
???????????? var ?encrypted?=?original.modPow(e,?n);
???????????? return ?HexstringTobyte(encrypted.ToHexString());
????????}


???????? /// ? <summary>
????????
/// ?RSAs?the?decrypt.
????????
/// ? </summary>
????????
/// ? <param?name="encrypteddata"> The?encrypteddata. </param>
????????
/// ? <param?name="d"> The?d. </param>
????????
/// ? <param?name="modulus"> The?modulus. </param>
????????
/// ? <returns></returns>
???????? public ? static ? byte []?RsaDecrypt( byte []?encrypteddata,? byte []?d,? byte []?modulus)
????????{
???????????? var ?encrypted?=? new ?BigInteger(encrypteddata);
???????????? var ?dd?=? new ?BigInteger(d);
???????????? var ?n?=? new ?BigInteger(modulus);
???????????? var ?decrypted?=?encrypted.modPow(dd,?n);
???????????? return ?HexstringTobyte(decrypted.ToHexString());
????????}


???????? /// ? <summary>
????????
/// ?Generate?random?bytes?with?given?length
????????
/// ? </summary>
????????
/// ? <param?name="bytelength"></param>
????????
/// ? <returns></returns>
???????? public ? static ? byte []?GenerateRandomBytes( int ?bytelength)
????????{
???????????? var ?buff?=? new ? byte [bytelength];
???????????? var ?rng?=? new ?RNGCryptoServiceProvider();

????????????rng.GetBytes(buff);
???????????? return ?buff;
????????}

????}
Encrypt
// ENCRYPT?WITH?PUBLIC?KEY
var ?rsa?=? new ?RSACryptoServiceProvider();
rsa.ImportParameters(_publicKey? /* Type:?RSAParameters */ );

byte []?encryptedData?=?RSAHelper.RsaEncrypt(Encoding.Unicode.GetBytes(stringDataToEncrypt? /* Type:?string */ ),?data.parameters.Exponent,?data.parameters.Modulus);
return ?Convert.ToBase64String(encryptedData);
Decrypt
? // Decrypt?
var ?rsa?=? new ?RSACryptoServiceProvider();
// Import?private?key
rsa.ImportParameters(_privateKey? /* ?Type:?RSAParameters? */ );
byte []?encryptedData?=?RSAHelper.RsaDecrypt(Convert.FromBase64String(encryptedBase64String /* ?Type:?string,?but?base64?format? */ ),?_privateKey.D,?_privateKey.Modulus);
return ?Encoding.Unicode.GetString(encryptedData);

更多討論

更多詳細(xì)討論參考 StackOverflow這 個(gè)帖子。?

?

?

?

System.Security.Cryptography.CryptographicException: The data to be decrypted exceeds the maximum for this modulus of 128 bytes. (RSACryptoServiceProv


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 精品牛牛影视久久精品 | 久久国产高清字幕中文 | 久久伊人网站 | 在线视频欧美日韩 | 伊人久久久综在合线久久在播 | 亚洲五月婷 | 欧洲国产伦久久久久久久 | 免费高清一级欧美片在线观看 | 精品久久久久久久一区二区伦理 | 亚洲天堂2015 | 色柚视频| 国产高清视频在线免费观看 | 国产 欧美 日产久久 | 精彩视频一区二区三区 | 精品久久中文字幕有码 | 国内毛片视频 | 久久免费精彩视频 | 欧美精品在线播放 | 日本中文在线三级在线播放 | 国产麻豆久久 | 久久久久久日本一区99 | 欧美日本在线 | 日本不卡在线观看 | 久久午夜影视 | 奇米影视奇米色777欧美 | 一级做受毛片免费大片 | 精产国品一二二区视 | 逆天至尊免费看229集 | 久久99视频精品 | 添人人躁日日躁夜夜躁夜夜揉 | 狼人香蕉香蕉在线视频播放 | 又粗又大的机巴好爽7 | 久久www免费人成_看片高清 | 国产玖玖在线 | 国产午夜视频在线观看第四页 | 丁香婷婷六月 | 久久黄视频 | 99热久久国产综合精品久久国产 | 日本一区二区精品 | 福利入口在线观看 | 国产呦系列免费 |