欢迎来到天天文库
浏览记录
ID:51536988
大小:1.45 MB
页数:25页
时间:2020-03-22
《RSA和DES加密算法详解.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、RSA算法原理及其编程实现RSA算法的产生Part1RonRivestLeonardAdlemanAdiShamirRSA公钥加密算法RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。1.随机选择两个秘密的质数p、q2.计算公开的模数,n=p*q3.计算秘密的φ(n)=(p-1)*(q-1)4.选择一个与φ(n)互质的量e5.求K的乘
2、法逆元素,用扩展欧几里得算法,模为φ(n)6.明文X的值应在0至n-1之间,计算Xe(modn)产生密文Y,完成加密操作7.计算Yd(modn)产生明文X,完成解密操作RSA算法描述Part21、随机选择两个秘密的质数p,q(89,97)2.计算公开的模数n=p*q(8633)3.计算秘密的欧拉函数φ(n)=(p-1)*(q-1)(8448)/*判定一个数是否为素数*/booltest_prime(Elemtypem){boolpd;inti;for(i=2;i3、epd=0;returnpd;RSA编程实现(C语言)Part34、选择一个与φ(n)互质的量e/*求最大公约数*/Elemtypegcd(Elemtypea,Elemtypeb)order(a,b);intr;if(b==0){returna;}elseRSA编程实现(C语言)Part3{while(true){r=a%b;a=b;b=r;if(b==0){returna;break;}}5.用扩展欧几里得算法求K的乘法逆元素d,模为φ(n)Elemtypeextend_euclid(Elemtypem,Elemtypebin){ord4、er(m,bin);Elemtypea[3],b[3],t[3];a[0]=1,a[1]=0,a[2]=m;b[0]=0,b[1]=1,b[2]=bin;if(b[2]==0){returna[2]=gcd(m,bin);}if(b[2]==1){returnb[2]=gcd(m,bin);}RSA编程实现(C语言)Part3while(true){if(b[2]==1){returnb[1];break;}intq=a[2]/b[2];for(inti=0;i<3;i++){t[i]=a[i]-q*b[i];a[i]=b[i];b[i]5、=t[i];6.明文X的值应在0至n-1之间,计算Xe(modn)产生密文Y,完成加密操作voidencrypt(){if(flag==0){cout<<"setkeyfirst:"<>m;c=modular_multiplication(m,pu.e,pu.n);cout<<"密文is:"<6、flag==0){cout<<"setkeyfirst:"<>c;m=modular_multiplication(c,pr.d,pr.n);cout<<"明文is:"<7、法明文长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥长度为64位。然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,因为密钥太短,现已被攻破。改为使用三重DES算法,即3DES。经过16轮迭代和置换,得到密文长度为64位。DES算法原理Part2明文64bits密钥64bits密文64bitsF函数32bits子密钥48bitsDES算法原理——初始置换和逆置换Part2DES算法中所有的置换表都是给定的DE8、S编程实现——初始置换和逆置换Part3DES算法原理——第一轮迭代Part264bits明文进行IP置换64bits明文分为左右两部分,分别为32bits右边32bits直接放入下一轮的左边
3、epd=0;returnpd;RSA编程实现(C语言)Part34、选择一个与φ(n)互质的量e/*求最大公约数*/Elemtypegcd(Elemtypea,Elemtypeb)order(a,b);intr;if(b==0){returna;}elseRSA编程实现(C语言)Part3{while(true){r=a%b;a=b;b=r;if(b==0){returna;break;}}5.用扩展欧几里得算法求K的乘法逆元素d,模为φ(n)Elemtypeextend_euclid(Elemtypem,Elemtypebin){ord
4、er(m,bin);Elemtypea[3],b[3],t[3];a[0]=1,a[1]=0,a[2]=m;b[0]=0,b[1]=1,b[2]=bin;if(b[2]==0){returna[2]=gcd(m,bin);}if(b[2]==1){returnb[2]=gcd(m,bin);}RSA编程实现(C语言)Part3while(true){if(b[2]==1){returnb[1];break;}intq=a[2]/b[2];for(inti=0;i<3;i++){t[i]=a[i]-q*b[i];a[i]=b[i];b[i]
5、=t[i];6.明文X的值应在0至n-1之间,计算Xe(modn)产生密文Y,完成加密操作voidencrypt(){if(flag==0){cout<<"setkeyfirst:"<>m;c=modular_multiplication(m,pu.e,pu.n);cout<<"密文is:"<6、flag==0){cout<<"setkeyfirst:"<>c;m=modular_multiplication(c,pr.d,pr.n);cout<<"明文is:"<7、法明文长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥长度为64位。然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,因为密钥太短,现已被攻破。改为使用三重DES算法,即3DES。经过16轮迭代和置换,得到密文长度为64位。DES算法原理Part2明文64bits密钥64bits密文64bitsF函数32bits子密钥48bitsDES算法原理——初始置换和逆置换Part2DES算法中所有的置换表都是给定的DE8、S编程实现——初始置换和逆置换Part3DES算法原理——第一轮迭代Part264bits明文进行IP置换64bits明文分为左右两部分,分别为32bits右边32bits直接放入下一轮的左边
6、flag==0){cout<<"setkeyfirst:"<>c;m=modular_multiplication(c,pr.d,pr.n);cout<<"明文is:"<7、法明文长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥长度为64位。然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,因为密钥太短,现已被攻破。改为使用三重DES算法,即3DES。经过16轮迭代和置换,得到密文长度为64位。DES算法原理Part2明文64bits密钥64bits密文64bitsF函数32bits子密钥48bitsDES算法原理——初始置换和逆置换Part2DES算法中所有的置换表都是给定的DE8、S编程实现——初始置换和逆置换Part3DES算法原理——第一轮迭代Part264bits明文进行IP置换64bits明文分为左右两部分,分别为32bits右边32bits直接放入下一轮的左边
7、法明文长度为64位。同时,DES使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥长度为64位。然而只有其中的56位被实际用于算法,其余8位可以被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,因为密钥太短,现已被攻破。改为使用三重DES算法,即3DES。经过16轮迭代和置换,得到密文长度为64位。DES算法原理Part2明文64bits密钥64bits密文64bitsF函数32bits子密钥48bitsDES算法原理——初始置换和逆置换Part2DES算法中所有的置换表都是给定的DE
8、S编程实现——初始置换和逆置换Part3DES算法原理——第一轮迭代Part264bits明文进行IP置换64bits明文分为左右两部分,分别为32bits右边32bits直接放入下一轮的左边
此文档下载收益归作者所有