密码md5 - 加盐salt

用户 --> 相同的密码 --> 不同的md5 hash()值  -- >加点 salt   

例如:库中的数据

{"id": 1000, "password": "5715073b5c60542dd47d0c11966e0621", "salt": "q<h5pL+_", "balance": 99251.66, "credit": 123.0, "enroll_date": "2018-03-06", "expire_date": "2050-1-1", "pay_day": 22, "status": 1}
1 def set_salt():
2     # 每个用户的salt值不一样 库中的password就不一样
3     salt = ''.join(random.sample(string.digits + string.ascii_letters + string.punctuation, 8))  # 随机的8位盐 使得相同的密码 也有不同md5()值
4     md5_value = md5()
5     md5_value.update(b'123' + salt.encode('utf-8'))
6     return salt, md5_value.hexdigest()

规则:

用户注册时:
用户输入【账号】和【密码】(以及其他用户信息);
系统为用户生成【Salt值】;
系统将【Salt值】和【用户密码】连接到一起;
对连接后的值进行散列,得到【Hash值】;
将【Hash值1】和【Salt值】分别放到数据库中。

用户登录时:
用户输入【账号】和【密码】;
系统通过用户名找到与之对应的【Hash值】和【Salt值】;
系统将【Salt值】和【用户输入的密码】连接到一起;
对连接后的值进行散列,得到【Hash值2】(注意是即时运算出来的值);
比较【Hash值1】和【Hash值2】是否相等,相等则表示密码正确,否则表示密码错误。
posted @ 2018-03-06 22:05  Alice的小屋  阅读(594)  评论(0编辑  收藏  举报