📅  最后修改于: 2023-12-03 14:52:55.991000             🧑  作者: Mango
密码是用户的敏感信息,为了保障用户的帐户安全,我们在数据库中存储密码时需要采取安全措施。本文将介绍如何在数据库中存储密码,注意事项和建议。
哈希算法是一种不可逆的算法,它将任意长度的数据通过哈希函数变换成固定长度的摘要(hash值),哈希值的大小是固定的,不同的数据映射成相同的哈希值的可能性是很小的(即发生哈希冲突的可能性很小)。因此,哈希算法常常用于密码加密。
常用的哈希算法包括:
import hashlib
import os
def hash_password(password):
"""对密码进行哈希加密"""
salt = os.urandom(16) # 生成16个随机字节作为盐
hash_value = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
return salt + hash_value
def verify_password(password, hash_bytes):
"""验证密码是否正确"""
salt = hash_bytes[:16] # 获取盐
hash_value = hash_bytes[16:] # 获取哈希值
new_hash_value = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
return hash_value == new_hash_value
# 对密码进行哈希加密
hashed_password = hash_password('password')
# 验证密码是否正确
is_valid_password = verify_password('password', hashed_password)