RSA算法
# -*- coding = utf-8 -*-
# @Time : 2022/6/12 11:11
# @Author : lxw_pro
# @File : py-32.py
# @Software : PyCharm
RSA算法介绍:
'''
传统密码:加密算法是秘密的
现代密码系统:加密算法是公开的,密匙是秘密的
对称加密
非对称加密
'''
RSA非对称加密系统:
'''
公钥:用来加密,是公开的
私钥:用来解密,是私有的
'''
RSA加密算法过程:
'''
1-随机选取两个质数p和q
2-计算n=pq
3-选取一个与n互质的小奇数e,K(n)=(p-1)(q-1)
4-对象n,计算e的乘法逆元d,即满足(e*d) mod K(n) = 1
5-公钥(e, n) 私钥(d, n)
加密过程: a = (m^e) mod n
解密过程: b = (c^d) mod n
'''
Python Console示范过程:
'''
PyDev console: starting.
Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 16:30:00) [MSC v.1900 64 bit (AMD64)] on win32
p = 53
q = 59
n=p*q
n
3127
fai=(p-1)*(q-1)
fai
3016
e = 3
fai / 3
1005.3333333333334
d = 2011
(e*d) % fai
1
(e*d) % n
2906
e
3
n
3127
d
2011
a = 87
c = (a**e)%n
c
1833
(c**d)%n
87
m = 36
c = (m**e)%n
(c**d)%n
36
'''
有趣编程:
代码如下:
import turtle as t
for i in range(0, 12):
for j in range(0, 2):
t.fd(100)
t.rt(60)
t.fd(100)
t.rt(120)
t.rt(30)
运行结果如下:
上一章链接:欧几里得算法
每日一言:
人之所以能,是因为相信能。