非对称加密RSA算法

旧街凉风 提交于 2020-03-28 02:38:26

密码与加密

传统密码:    加密算法是秘密的现代密码系统:加密算法是公开的;秘钥是秘密的(秘钥是用来加密的)    对称加密:加密和解密使用一个秘钥    非对称加密:使用两个秘钥,一个用来加密,一个用来解密

加密的RSA是用来进行信息传输用,存数据库的密码用的hash映射,md5或者sha

非对称加密

使用两个秘钥,公钥和私钥,公钥加密私钥解密,或者私钥加密公钥解密。例如RSA加密算法,应用:https协议,Linux远程登录不用密码。    公钥:用来加密,是公开的    私钥:用来解密,是私有的

 

 加密过程测试:

1.随机选取两个质数p和q2.计算n=pq3.选取一个与φ(n)互质的小奇数e, φ(n)=(p-1)(q-1)4.对模φ(n), 计算e的乘法逆元d,即满足(e*d) % φ(n) = 15.公钥(e, n)  私钥(d, n)6.加密过程:c=(m^e) % n7.解密过程:m=(c^d) % n
p = 53
q = 59
n = p*q
fai_n = (p-1)*(q-1)
# 选个小奇数 e 要满足(e*d) % fai_n = 1
e = 3
# 这个d一定是唯一的,证明略,满足(e*d) % fai_n = 1
d = 2011

m = 87
print('信息:', m)
print('---------公钥加密,私钥解密-------')
c = (m**e) % n
print('公钥加密后:', c)
m = (c**d) % n
print('私钥解密后:', m)
print('---------私钥加密,公钥解密-------')
k = (m**d) % n
print('私钥加密后:', k)
print('公钥解密后:', (k**e) % n)

'''
信息: 87
---------公钥加密,私钥解密-------
公钥加密后: 1833
私钥解密后: 87
---------私钥加密,公钥解密-------
私钥加密后: 1320
公钥解密后: 87
'''

 

思考:为什么RSA加密算法破解不了?已知公钥(e, n) 求私钥(d, n),需要把n拆成两个质数的乘积把一个大整数拆成两个质数只能用穷举法,整数越大破解花费时间越长,而且秘钥更换就又需要破解,这样失去破解的意义
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!