资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2,#,RSA,算法原理及其编程实现,1,2,RSA,算法的产生,Part 1,Ron Rivest,Leonard Adleman,Adi Shamir,RSA,公钥加密算法,RSA,是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被,ISO,推荐为公钥数据加密标准。,RSA,算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。,2,2,1,随机选择两个秘密的质数,p,、,q2,计算公开的模数,,n=p*q3,计算秘密的,(n)=(p-1)*(q-1),4,选择一个与,(n),互质的量,e 5,求,K,的乘法逆元素,用扩展欧几里得算法,模为,(n)6,明文,X,的值应在,0,至,n-1,之间,计算,X,e,(mod n),产生密文,Y,,完成加密操作,7,计算,Y,d,(,mod n,)产生明文,X,,完成解密操作,RSA,算法描述,Part 2,3,2,1,、随机选择两个秘密的质数,p,,,q,(,89,,,97,),2,计算公开的模数,n,p,*,q,(,8633,),3,计算秘密的欧拉函数,(n)=(p-1)*(q-1),(,8448,),/*,判定一个数是否为素数*,/,bool test_prime(Elemtype m),bool pd;,int i;,for(i=2;i m;i+),if(m%i=0),break;,if(m=i),pd=1;,else,pd=0;,return pd;,RSA,编程实现(,C,语言),Part,3,4,2025/4/30 周三,4,、选择一个与,(n),互质的量,e,/*,求最大公约数*,/,Elemtype gcd(Elemtype a,Elemtype b),order(a,b);,int r;,if(b=0),return a;,else,RSA,编程实现(,C,语言),Part,3,while(true),r=a%b;,a=b;,b=r;,if(b=0),return a;,break;,5,2025/4/30 周三,5,用扩展欧几里得算法求,K,的乘法逆元素,d,,模为,(,n),Elemtype extend_euclid(Elemtype m,Elemtype bin),order(m,bin);,Elemtype a3,b3,t3;,a0=1,a1=0,a2=m;,b0=0,b1=1,b2=bin;,if(b2=0),return a2=gcd(m,bin);,if(b2=1),return b2=gcd(m,bin);,RSA,编程实现(,C,语言),Part,3,while(true),if(b2=1),return b1;,break;,int q=a2/b2;,for(int i=0;i3;i+),ti=ai-q*bi;,ai=bi;,bi=ti;,6,2025/4/30 周三,6,明文,X,的值应在,0,至,n-1,之间,计算,X,e,(mod n),产生密文,Y,,完成加密操作,void encrypt(),if(flag=0),coutsetkey first:endl;,produce_key();,coutm;,c=modular_multiplication(m,pu.e,pu.n);,cout,密文,is:cendl;,cout,请输入下一步操作,;,RSA,编程实现(,C,语言),Part,3,7,2025/4/30 周三,7.,计算,Y,d,(,mod n,)产生明文,X,,完成解密操作,void decrypt(),if(flag=0),coutsetkey first:endl;,produce_key();,coutc;,m=modular_multiplication(c,pr.d,pr.n);,cout,明文,is:mendl;,cout,请输入下一步操作,;,RSA,编程实现(,C,语言),Part,3,8,2025/4/30 周三,DES,算法原理及其编程实现,9,2,DES,算法简介,Part,1,DES=Data Encryption Standard=,数据加密标准,DES,是一种典型的,块密码,,即一种将固定长度的明文通过一系列复杂的操作变成同样长度的密文的算法,明文长度为,64,位,。同时,,DES,使用密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。,密钥长度为,64,位,。然而只有其中的,56,位,被实际用于算法,其余,8,位可以被用于奇偶校验,并在算法中被丢弃。因此,,DES,的有效密钥长度为,56,位,因为密钥太短,现已被攻破。改为使用三重,DES,算法,即,3DES,。,经过,16,轮,迭代和置换,得到,密文长度为,64,位,。,10,2025/4/30 周三,DES,算法原理,Part,2,明文,64 bits,密钥,64 bits,密文,64 bits,F,函数,32 bits,子密钥,48 bits,11,2025/4/30 周三,DES,算法原理,初始置换和逆置换,Part,2,DES,算法中所有的置换表都是给定的,12,2025/4/30 周三,DES,编程实现,初始置换和逆置换,Part,3,13,2025/4/30 周三,DES,算法原理,第一轮迭代,Part 2,64bits,明文进行,IP,置换,64bits,明文分为左右两部分,分别为,32bits,右边,32bits,直接放入下一轮的左边,32bits,左边,32bits,与,F,函数异或之后放入下一轮的右边,32bits,14,2025/4/30 周三,DES,算法原理,子密钥生成,Part 2,56bits,密钥分成左右两边,经过置换、左移、选位得到,48bits,的子密钥,15,2025/4/30 周三,DES,算法原理,F,函数生成,Part 2,左边,32bitsE,盒置换得到,48bits,异或,得到,48bits,16,2025/4/30 周三,17,DES,编程实现,E,置换表,Part 3,2025/4/30 周三,DES,算法原理,F,函数生成,Part 2,左边,32bitsE,盒置换得到,48bits,异或,得到,48bits,18,2025/4/30 周三,19,DES,算法原理,S,盒置换,Part 2,6 bits,*,8,组,S,盒,4 bits,*,8,组,48 bits,S,盒,32 bits,2025/4/30 周三,DES,编程实现,S,盒置换,Part 3,20,2025/4/30 周三,DES,算法原理,F,函数生成,Part 2,经过,P,置换表得到,32bits,,即,F,函数,异或,得到,48bits,21,2025/4/30 周三,22,DES,编程实现,P,置换表,Part 3,2025/4/30 周三,DES,算法原理,F,函数生成,Part 2,经过,P,置换表得到,32bits,,即,F,函数,异或,得到,48bits,23,2025/4/30 周三,DES,算法原理,十六轮迭代,Part 2,右边,32bits,直接放入下一轮的左边,32bits,左边,32bits,与,F,函数异或之后放入下一轮的右边,32bits,迭代,16,次之后再进行逆置换,FP,,得到,64bits,密文,24,2025/4/30 周三,25,DES,算法原理,解密过程,Part 2,DES,的解密过程就是加密的逆过程。,2025/4/30 周三,
展开阅读全文