RSA加密算法教学RSA加密算法教学
软件的
设计与实现
导师:贾忠田答辩人:答辩人:王强茂专业:
网络工程
RSA算法综述算法综述
RSA加密算法是一种非对称加密算法。在公钥加密标准加密算法是一种非对称加密算法。加密算法是一种非对称加密算法电子商业中被广泛使用。和电子商业中RSA被广泛使用。RSA是1977年由罗纳被广泛使用是年李维斯特()、阿迪萨莫尔(德·李维斯特(RonRivest)、阿迪萨莫尔(AdiShamir)李维斯特)、阿迪·萨莫尔)伦纳德·阿德曼阿德曼(和伦纳德阿德曼(LeonardAdleman)一起提出的。当时)一起提出的。他们三人都在麻省理工
工作。麻省理工工作他们三人都在麻省理工工作。RSA就是他们三人姓氏就是他们三人姓氏开头字母拼在一起组成的。开头字母拼在一起组成的。RSA算法是一种非对称密码算算法是一种非对称密码算所谓非对称,就是指该算法需要一对密钥,法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。一个加密,则需要用另一个才能解密。对极大整数做因数分解的难度决定了RSA算法的可靠性。算法的可靠性。对极大整数做因数分解的难度决定了算法的可靠性换言之,对一极大整数做因数分解愈困难,换言之,对一极大整数做因数分解愈困难,RSA算法愈可算法愈可假如有人找到一种快速因数分解的算法的话,靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样加密的信息的可靠性就肯定会极度下降。加密的信息的可靠性就肯定会极度下降的算法的可能性是非常小的。今天只有短的RSA钥匙才可的算法的可能性是非常小的。今天只有短的钥匙才可能被暴力方式破解。能被暴力方式破解。
RSA算法过程算法过程
1.选择两个大素数P和Q【设P=47Q=71】2.计算N=P*Q【N=47*71=3337】3.选择一个公钥(加密密钥)E,使其不是(P-1)与(Q-1)的因子【(47-1)*(71-1)=46*70=32203220=2*2*5*7*23E不能有因子2、5、7、23设E为79】4.选择私钥(解密密钥)D,满足条件(D*E)mod(P-1)(Q-1)=1假如p是质数,且a,p互质,那么a的(p-1)次方除以p的余数恒等于1。【计算D=1019】5.加密时,从明文PT计算密文CT:CT=PTEmodN【设明文为688,CT=68879mod3337=1570】6.将密文CT发给接收方7.解密时,从密文CT计算明文PT:PT=CTDmodN【PT=15701019mod3337=668】
对汉字的处理用java.net.URLEncoder.encode()来处理汉字,把汉字变成URL编来处理汉字,把汉字变成再将URL编码转化成编码转化成ASCII码码,再将编码转化成码进行加密操作。进行加密操作。
对长明文的处理由于RSA加密一个很长的明文加密一个很长的明文由于字符串需要很长时间,字符串需要很长时间,会对
计算机造成很大的负担,算机造成很大的负担,于是我们需要对欲加密的明文进行分组。
对文件的加解密加密:加密:将任意文件以字节流的方式读入,式读入,进行加密后以字符流的方式生成文件,输出两个文件,方式生成文件,输出两个文件,密钥文件和加密后的文件。密钥文件和加密后的文件。解密:解密:将加密后的文件以字符流的方式读入,的方式读入,进行解密后以字节流的方式生成文件。流的方式生成文件。解密时需要输入扩展名。输入扩展名。