RSA算法实验C++

上传人:Sc****h 文档编号:140094139 上传时间:2022-08-23 格式:DOCX 页数:5 大小:13.36KB
返回 下载 相关 举报
RSA算法实验C++_第1页
第1页 / 共5页
RSA算法实验C++_第2页
第2页 / 共5页
RSA算法实验C++_第3页
第3页 / 共5页
点击查看更多>>
资源描述
。一、实验目的通过编程实现 RSA的加密和解密过程,加深对公钥(非对称)密码算法的认识。二、实验环境软件工具: Visual C+ 6.0操作系统 :windows xp三、实验思想公钥密码算法是指一个加密系统的加密密钥和解密密钥是不同的, 或者说不能用其中一个推导出另一个。 在公钥密码算法的两个密钥中, 一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。公钥密码算法解决了对称密码体制中密钥管理的难题, 并提供了对信息发送人的身份进行验证的手段,是现代密码学最重要的发明。RSA 密码体制是目前为止最成功的公钥密码算法,虽然它的安全性还未能得到理论证明,但经过 20 多年的密码分析和攻击,迄今仍然被实践证明是安全的。RSA算法描述如下:1 公钥选择两 个互 异的大素 数 p 和q,n 是二 者的 乘积 , 即 n 二 pq 使D(n)=(p-1)(q-1), D(n) 为欧拉函数。随机选取正整数 e, 使其满足 gcd(e, (D(n)=1 ,即 e 和 D (n) 互质,则将 (n,e) 作为公钥。2. 私钥求出正数 d, 使其满足 e d=1 mod D (n),则将 (p,q,d)作为私钥。3. 加密算法对于明文 M,由 C=Me mod n,得到密文 C。4. 解密算法对于密文 C, 由 M=Cd mod n,得到明文 M如果窃密者获得了 n, e 和密文 C, 为了破解密文必须计算出私钥 d,为此需要先分解 n 为了提高破解难度, 达到更高的安全性, 一般商业应用要求 n 的长度不小于 1024 位,更重要的场合不小于2048 位。四、实验数据(源程序)#define MAX 100/数组的最大长度#define MARK (0-1)char* Addition(char a,char b);/ 实现加法char* Substraction(char a,char b);/ 实现减法,若abchar* Mode(char a,char b,char c);/ 实现取余运算 (ab) mod c void djs(char s);/ 生成大奇数 sint Rabin_Miller_Test(char s);/ 素数检验算法生成 100 位的奇数void djs(char s)/ 生成大奇数 sint i,j;srand(time(NULL); /修改随机数种子j=rand()%10;while(j=0)j=rand()%10;s0=j+0; /最高位不为0 保证产生的随机数有MAX位while(fmod(j,2)=0)j=rand()%10;sMAX-1=j+0;/最低位为奇数保证产生的随机数为奇数for(i=1;i=0)djs(a);j=0;strcpy(c,Mode(a,b,s);if(Compare(c,1)=0 | Compare(c,e)=0)return 1;loop:if(j0 & Compare(c,1)=0)return 0;j+;if(ji & Compare(c,e)!=0)strcpy(c,Mode(c,2,s);goto loop;if(Compare(c,e)=0)return 1;if(j=i & Compare(c,e)!=0)return 0;ab mod c 的快速算法char* Mode(char a,char b,char c)/ 实现取余运算 (ab) mod cchar a1MAX,b1MAX,c1MAX,d2*MAX,e2*MAX;int i;strcpy(a1,a);strcpy(b1,b);strcpy(c1,1);while(Compare(b1,0)!=0)if(fmod(b1strlen(b1)-1-0,2)=0)/b能够被 2 整除strcpy(b1,Division(b1,2);strcpy(d,Multiplication(a1,a1);if(Compare(d,c)0)。3。strcpy(a1,d);elsestrcpy(e,Division(d,c);strcpy(e,Multiplication(e,c);strcpy(d,Substraction1(d,e);for(i=0;istrlen(d);i+)a1i=di;a1i=0;else/b不能够被2 整除strcpy(b1,Substraction(b1,1);strcpy(d,Multiplication(c1,a1);if(Compare(d,c)0)strcpy(c1,d);elsestrcpy(e,Division(d,c);strcpy(e,Multiplication(e,c);strcpy(d,Substraction1(d,e);for(i=0;istrlen(d);i+)c1i=di;c1i=0;return c1;五、实验心得这个实验的算法实现根据课本较容易实现, 但真正掌握这个算法需要对算法进行深入的分析,这个算法的实现需要特别注意细节:例如:数据的导入,需将数据文件明确位置;明文字符的反向输出。4。欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书, 学习资料等等打造全网一站式需求。5
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 幼儿教育


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!