关于RSA加密算法的长度限制问题.docx

上传人:牧羊曲112 文档编号:3306001 上传时间:2023-03-12 格式:DOCX 页数:3 大小:36.95KB
返回 下载 相关 举报
关于RSA加密算法的长度限制问题.docx_第1页
第1页 / 共3页
关于RSA加密算法的长度限制问题.docx_第2页
第2页 / 共3页
关于RSA加密算法的长度限制问题.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《关于RSA加密算法的长度限制问题.docx》由会员分享,可在线阅读,更多相关《关于RSA加密算法的长度限制问题.docx(3页珍藏版)》请在三一办公上搜索。

1、关于RSA加密算法的长度限制问题关于RSA加密算法的长度限制问题 RSA是常用的非对称加密算法。近来有学生在项目中使用System.Security类库中的RSA加密算法时,出现了“不正确的长度”,这实际上是因为待加密的数据超长所致。.net Framework中提供的RSA算法规定,每次加密的字节数,不能超过密钥的长度值减去11,而每次加密得到的密文长度,却恰恰是密钥的长度。所以,如果要加密较长的数据,可以采用数据截取的方法,分段加密,实现如下: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider; byte data =

2、.; /要加密的数据 string publicKey = . ; /获取公钥 rsa.FromXmlString(publicKey); int keySize = rsa.KeySize / 8; int bufferSize = keySize - 11; byte buffer = new bytebufferSize; MemoryStream msInput = new MemoryStream(data); MemoryStream msOuput = new MemoryStream; int readLen = msInput.Read(buffer, 0, bufferSi

3、ze); while(readLen 0) byte dataToEnc = new bytereadLen; Array.Copy(buffer, 0 , dataToEnc, 0, readLen); byte encData = rsa.Encrypt(dataToEnc , false); msOutput.Write(encData, 0, encData.Length); readLen = msInput.Read(buffer, 0, bufferSize); msInput.Close; byte result = msOutput.ToArray; /得到加密结果 msOu

4、tput.Close; rsa.Clear; 解密时肯定也要使用分段解密,算法如下: RSACryptoServiceProvider rsa = new RSACryptoServiceProvider; byte key = .; /加载私钥 string privateKey = Encoding.ASCII.GetString(key); byte dataEnc = .; /加载密文 rsa.FromXmlString(privateKey); int keySize = rsa.KeySize / 8; byte buffer = new bytekeySize; MemorySt

5、ream msInput = new MemoryStream(dataEnc ); MemoryStream msOuput = new MemoryStream; int readLen = msInput.Read(buffer, 0, keySize); while(readLen 0) byte dataToDec = new bytereadLen; Array.Copy(buffer, 0 , dataToDec, 0, readLen); byte decData = rsa.Decrypt(dataToDec , false); msOutput.Write(decData, 0, decData.Length); readLen = msInput.Read(buffer, 0, keySize); msInput.Close; byte result = msOutput.ToArray; /得到解密结果 msOutput.Close; rsa.Clear;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号