非对称加密、解密算法RSA的C++实现_第1页
非对称加密、解密算法RSA的C++实现_第2页
非对称加密、解密算法RSA的C++实现_第3页
非对称加密、解密算法RSA的C++实现_第4页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

非对称加密、解密算法RSA的C++实现

信息平安技术试验报告

———非对称加密、解密算法RSA的C++实现

计算机学院2023级12班学号:53081224姓名:胡守峰

非对称加密、解密算法RSA的C++实现

【我的目的】依据课上老师所讲“非对称加密、解密算法RSA”的有关学问,

编写其的C++语言实现。

【我的加密思想】第一步,用户首先输入两个素数p和q,并求出

n=p*q,然后再求出n的欧拉函数值phi。

其次步,在[e,phi]中选出一个与phi互素的整数e,并依据e*d≡1(modphi),求出e的乘法逆元。至此我们已经得到了公开密钥{e,n}和隐秘密钥{d,n}。

第三步,让用户输入要进行加密的小于n一组正整数(个数不超过MAXLENGTH=500),输入以-1为结束标志,实际个数存入size中,正整数以clear[MAXLENGTH]保存。

第四步,对第三步所得的明文clear[MAXLENGTH]进行加密。遍历clear[size],对每一个整数用以下算法进行加密,并将加密后的密文保存在Ciphertext[MAXLENGTH]中。

留意:此处不能用m2[j]=clear[j]^e整数的幂,由于当e和clear[j]较大时,会发生溢出,至使消失无法预料的结果。

第五步,输出加密后的密文。

【我的解密思想】第一步,依据在以上算法中求出的解密密钥[d,phi],对加

密后的密文Ciphertext[MAXLENGTH]进行解密,结果保存在DecryptionText[MAXLENGTH]中,算法如下:

Page2of9

其次步,输出对加密前的明文和加密并解密后的密文进行比较,推断两个数组是否全都,从而得知算法是否正确。

【我的试验】

1、RSA加密、解密算法的C++实现(可以在VC6.0上运行):

#include#include

usingnamespacestd;

#defineMAXLENGTH500//明文最大长度,即所允许最大整数个数

intsize=0;//保存要进行加密的正整数的个数intp,q;//两个大素数

intn,phi;//n=p*q,phi=(p-1)*(q-1)是n的欧拉函数值inte;//{e,n}为公开密钥intd;//{d,n}为隐秘密钥

intclear[MAXLENGTH],Ciphertext[MAXLENGTH];//分别用于存放加//密前的明//文和加密后的密文

intDecryptionText[MAXLENGTH];//存放解密后的明文

////////////////////////////////////////////////////////////

//以下为加密算法

voidEncryption(){//加密算法

cout>p>>q;

cout>e;floatd0;

for(inti=1;;i++)

{///求解乘法逆元e*d≡1(modphi)d0=(float)(phi*i+1)/e;if(d0-(int)d0==0)

Page3of9

break;}

d=(int)d0;cout>clear[j];if(clear[j]==-1)break;count=e;

while(count>0)

{//对明文进行加密Ciphertext=(clear)^emodn//加密算法Ciphertext[j]=(Ciphertext[j]*clear[j])%n;

count--;}}

cout0)

{//对密文进行解密DecryptionText=(Ciphertext)^d(modn)DecryptionText[j]=((DecryptionText[j]*Ciphertext[j])%n);count--;}}

Page4of9

cout>c;

if(c==

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论