关于rsa加密算法的长度限制问题

关于rsa加密算法的长度限制问题

ID:11321595

大小:30.50 KB

页数:4页

时间:2018-07-11

关于rsa加密算法的长度限制问题_第1页
关于rsa加密算法的长度限制问题_第2页
关于rsa加密算法的长度限制问题_第3页
关于rsa加密算法的长度限制问题_第4页
资源描述:

《关于rsa加密算法的长度限制问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

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

2、ider();      byte[]data=........;         //要加密的数据      stringpublicKey=....;  //获取公钥      rsa.FromXmlString(publicKey);      intkeySize=rsa.KeySize/8;      intbufferSize=keySize-11;      byte[]buffer=new byte[bufferSize];      MemoryStreammsInput=new MemoryStream(da

3、ta);      MemoryStreammsOuput=new MemoryStream();      intreadLen=msInput.Read(buffer,0, bufferSize);      while(readLen>0)      {              byte[]dataToEnc=new byte[readLen];              Array.Copy(buffer,0,dataToEnc, 0,readLen);              byte[]encData= rsa.

4、Encrypt(dataToEnc,false);              msOutput.Write(encData,0, encData.Length);              readLen=msInput.Read(buffer,0, bufferSize);      }      msInput.Close();      byte[]result=msOutput.ToArray();    //得到加密结果      msOutput.Close();      rsa.Clear();解密时肯定也要使用

5、分段解密,算法如下:      RSACryptoServiceProviderrsa=new RSACryptoServiceProvider();       byte[]key=.....;    //加载私钥      stringprivateKey= Encoding.ASCII.GetString(key);      byte[]dataEnc=...;   //加载密文      rsa.FromXmlString(privateKey);      intkeySize=rsa.KeySize/8;     

6、  byte[] buffer=newbyte[keySize];      MemoryStreammsInput=new MemoryStream(dataEnc);      MemoryStreammsOuput=new MemoryStream();      intreadLen=msInput.Read(buffer,0, keySize);      while(readLen>0)      {              byte[]dataToDec=new byte[readLen];           

7、   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=msOutp

8、ut.ToArray();    //得到解密结果      msOutput.Close();      rsa.Clear();

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。