什么叫hash:一种算法--->将bytes类型的数据转换为数字及字母
特点:
1.只要传入的内容一样,得到的hash值必然一样
import hashlib m=hashlib.md5() # m.update('您好'.encode('utf-8')) # m.update('世界'.encode('utf-8')) # print(m.hexdigest()) #---> 5877b5e90951e7db09239fcc91902bdc m.update('您好世界'.encode('utf-8')) print(m.hexdigest()) #---> 5877b5e90951e7db09239fcc91902bdc
这个特点可以用在文件传输过程中确保文件的完整性(内容一样,前后hash值也必然一样)2.不能由hash值反解成原内容
这个特点可以用于密码传输,用户输入密码,在客户端完成转换hash转换(产生密文),通过网络传输密文,与服务端的密文进行对比
但是,可以在传输过程中进行抓包,使用暴力破解(不断尝试不同的习惯密码组合以相同的hash算法转换,与抓到的hash密文对比)
所以我们使用密码加盐,来增加破解的难度(增加破解的成本)
import hashlib user = input('输入账户>>>') pwd = input('输入密码>>>') #加盐 top = '12345' bottom = 'cnm' data = top + user + bottom + pwd #锁加密 lock = hashlib.md5() lock.update(data.encode('utf-8'))
特点3:只要hash算法不变,无论校验的内容有多大,得到的hash值的长度是不变的(保证hash值不影响文件在传输过程中的效率)