【密码学与网络安全】RSA公钥密码加密解密


实验目的与要求

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解密算法输出明文,结果如下:

--------代码仅供参考,需要代码可以私聊小编,小编看到后会第一时间回复哈~--------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值