要一直走下去

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

密码与加密

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

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

非对称加密

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

 

 加密过程测试:

1.随机选取两个质数p和q
2.计算n=pq
3.选取一个与φ(n)互质的小奇数e, φ(n)=(p-1)(q-1)
4.对模φ(n), 计算e的乘法逆元d,即满足(e*d) % φ(n) = 1
5.公钥(e, n) 私钥(d, n)
6.加密过程:c=(m^e) % n
7.解密过程: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拆成两个质数的乘积
把一个大整数拆成两个质数只能用穷举法,整数越大破解花费时间越长,
而且秘钥更换就又需要破解,这样失去破解的意义

posted on 2019-09-09 09:30  要一直走下去  阅读(708)  评论(0编辑  收藏  举报