1、什么是hash
hash 是一种算法,也叫散列,hashlib.md5()接受一个参数,对该参数进行加工,返回一串16进制的字符串
打个比方:
hash算法比喻为一座工厂
传给hash算法的参数就是原材料
返回的hash值就是生产出的产品
2、为何要用hash算法
hash值、产品的三大特性:
1,只要传入的参数值相同,得到的hash值必然也相同
2,只要使用hash算法固定一种(md5),无论传入的参数值多大(甚至可以是一个文件)
但是得到的hash值的长度的都是固定的
3,不可以用hash值逆推出原来的内容
就是只能比较两个hash值是否相同,你不能通过hash值反向推出参数值
应用场景:
基于1.2的可以验证下载文件是否一致
基于1.3可以对密码进行加密
import hashlib
h = hashlib.md5()
h.update('jfksfjsdfsf'.encode('utf-8'))
print(h.digest())
print(h.hexdigest())
一个简单的登录验证实例
dict1 = {}
def md5(b):
h = hashlib.md5()
h.update(b.encode('utf-8'))
return h.hexdigest()
def login(username,password):
user = username + password + '盐'
check_user = md5(user)
if dict1['user'] == check_user:
print('登录成功')
else:
print('登录失败')
if __name__ == '__main__':
md = md5('jackqazqaz123盐')
dict1.setdefault('user',md)
username = input('请输入用户名>>>').strip()
password = input('请输入密码>>>').strip()
login(username,password)