您的当前位置:首页正文

密码算法安全分析与算法攻击全解

2023-08-27 来源:伴沃教育
实验项目与实验报告( 1 )

学科:信息与网络安全 学号:20134088141 姓名:羊波 时间:10 月11 日实验项目: RSA加密解密算法的实现(使用工具软件与代码实现)及RSA的安全性分析 实验目的: 通过利用RAS工具的使用实现加密和解密过程,加深对公钥(非对称)密码算法的认识。 一、实验步骤: 1. 完成实验教程1-3 2. 登录网络平台修改作业发布密码,上传实验报告一 3. 注册百度知道号,并加入知行网络团队。 二、实验内容: 实验原理: 公钥密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。在公钥密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。公钥密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证的手段,是现代密码学的最重要的发明。 RAS算法描述如下: 1. 公钥 选择两个不同的大素数p和q(一般都为100位左右的十进制数字),n是二者的乘积; 计算乘积:n=pq; 计算欧拉函数值:φ(n)=(p-1)(q-1); 随机选取正整数e,使其满足1 #include unsigned long prime1,prime2,ee; unsigned long *kzojld(unsigned long p,unsigned long q) //扩展欧几里得算法求模逆 {unsigned long i=0,a=1,b=0,c=0,d=1,temp,mid,ni[2]; mid=p; while(mid!=1) while(p>q) {p=p-q; mid=p;i++;} a=c*(-1)*i+a;b=d*(-1)*i+b; temp=a;a=c;c=temp; temp=b;b=d;d=temp; temp=p;p=q;q=temp; i=0; } { ni[0]=c;ni[1]=d; return(ni);} unsigned long momi(unsigned long a,unsigned long b,unsigned long p) //模幂算法 { unsigned long c; c=1; if(a>p) a=a%p; while(b!=0) { b=b/2; } { if(b>p) b=b%(p-1); while(b%2==0) a=(a*a)%p; b=b-1; c=(a*c)%p; } return(c); } void RSAjiami() //RSA加密函数 { unsigned long c1,c2; unsigned long m,n,c; n=prime1*prime2; system(\"cls\"); printf(\"Please input the message:\\n\"); scanf(\"%lu\",&m);getchar(); c=momi(m,ee,n); printf(\"The cipher is:%lu\",c); return; } void RSAjiemi() //RSA解密函数 {unsigned long m1,m2,e,d,*ni; unsigned long c,n,m,o; n=prime1*prime2; system(\"cls\"); printf(\"Please input the cipher:\\n\"); scanf(\"%lu\",&c); o=(prime1-1)*(prime2-1); getchar(); ni=kzojld(ee,o); d=ni[0]; m=momi(c,d,n); printf(\"The original message is:%lu\",m); return;} void main() { unsigned long m; char cho; printf(\"Please input the two prime you want to use:\\n\"); printf(\"P=\");scanf(\"%lu\",&prime1);getchar(); printf(\"Q=\");scanf(\"%lu\",&prime2);getchar(); printf(\"E=\");scanf(\"%lu\",&ee); if(prime1

因篇幅问题不能全部显示,请点此查看更多更全内容