实验目的与要求
1、掌握公开密钥密码的原理;
2、掌握RSA算法的加密和解密过程;
3、用任意编程语言实现RSA算法的加密和解密;
4、学会用规范的方法撰写实验报告。
实验原理与内容
5、掌握RSA的加密过程和解密过程;
6、实现求逆的算法(扩展的欧几里德算法);
7、使用随机函数产生随机数,并进行加密和解密:
(1)加密过程:私有密钥随机产生,公开密钥利用求逆算法给出,明文键盘输入,密文利用RSA算法输出;
(2)解密过程:密文键盘输入,私有密钥键盘输入,利用RSA解密算法输出明文。
8、撰写实验报告。
9、要求:
加密:输入明文m , 求密文.(明文可使用学号或姓名全拼)
解密:根据求得密文, 解出明文信息(密文可使用学号或姓名全拼)
实验过程与结果
1、用python实现RSA公钥密码加密解密过程,具体代码如下:
2、拓展欧几里得算法是已知两个整数 a和 b 的情况下,需要用递归算法求解一组系数 x 和 y对应的值,来计算a,b最大公约数gcd(a,b)= b。当a等于0的时候,算法结束,输出结果。
3、求模逆需要使用扩展欧几里得算法计算 gcd(e, phi) 和 x,如果 gcd 不等于 1,e 和 phi 不是互为质数,如果e 和 phi互质,返回逆元 x % phi 。
4、fast_expmod 函数实现了快速幂算法,利用指数的二进制表示来减少乘法运算的次数,从最低位开始,每次平方底数并将指数右移一位,如果当前位是1,则将结果与当前的底数相乘。
5、加密解密过程分析:
加密过程:首先拆分公钥为n和e,用ord()函数转换为对应的ASCII码,再用快速幂算法计算加密值,并将结果存储在cipher列表中,返回cipher列表中的整数转换为逗号分隔的字符串。
解密过程:首先拆分私钥为n和d,将密文字符串转换为整数列表,对整数列表ciphertext中的每个加密值使用快速幂算法计算解密值,并将结果存储在plain字符串中,返回解密后的明文字符串。
6、主函数中首先设置16位数的密钥,调用generate_keypair函数生成RSA密钥对,并输出公钥和私钥,会提示用户输入明文,使用公钥对明文进行加密,并输出密文。也会提示用户输入密文及私钥的n和d值,使用私钥对密文进行解密,并输出解密后的明文。
7、执行RSA公钥密码加密解密代码,加密过程明文键盘输入,密文利用RSA算法输出;解密过程密文键盘输入,私有密钥键盘输入,利用RSA解密算法输出明文,结果如下:
--------代码仅供参考,需要代码可以私聊小编,小编看到后会第一时间回复哈~--------