Python中的加密密码存储和身份验证方法

2023-04-17 00:00:00 密码 加密 身份验证

在Python中,常用的加密密码存储方法是使用哈希函数将密码转换为一串固定长度的字符串,然后将哈希值存储到数据库中,这样在身份验证时只需要比较哈希值即可,而不需要明文存储密码。
常用的哈希函数有MD5、SHA-1、SHA-256等,其中SHA-256安全性最高,推荐使用。
以下是一个示例代码,展示如何使用SHA-256哈希函数对密码进行加密存储,并在身份验证时比较哈希值。

import hashlib
# 将密码转换为哈希值
def hash_password(password):
    salt = 'pidancode.com'.encode('utf-8')
    # 加盐操作
    salted_password = password.encode('utf-8') + salt
    # 使用SHA-256哈希函数
    hashed_password = hashlib.sha256(salted_password).hexdigest()
    return hashed_password
# 将哈希值存储到数据库中
def store_password(password):
    hashed_password = hash_password(password)
    # 将哈希值存储到数据库中
    return hashed_password
# 身份验证
def authenticate(password, stored_password):
    hashed_password = hash_password(password)
    if hashed_password == stored_password:
        return True
    else:
        return False
# 示例使用
password = 'pidancode.com'
stored_password = store_password(password)
print(stored_password) # 输出存储的哈希值
# 身份验证
if authenticate('pidancode.com', stored_password):
    print('身份验证成功')
else:
    print('身份验证失败')

在上述代码中,salt是一个随机字符串,用于增加哈希值的安全性。hash_password()函数将密码和盐值拼接后使用SHA-256哈希函数计算哈希值,并返回结果。store_password()函数将哈希值存储到数据库中。authenticate()函数用于在身份验证时比较哈希值是否相等,从而判断身份验证是否成功。最后,使用示例演示了如何加密存储密码,并在身份验证时进行验证。

相关文章