请写一段Python中使用哈希+盐的方法安全存储和验证用户名及密码的示例
时间: 2024-09-07 17:03:13 浏览: 50
在Python中,我们可以使用哈希函数(如`hashlib`库)结合随机字符串(盐)来安全地存储和验证用户的用户名和密码。这里是一个简单的示例:
```python
import hashlib
import os
import binascii
# 定义生成盐的函数
def generate_salt(length=16):
return binascii.hexlify(os.urandom(length)).decode('utf-8')
# 用户输入的原始数据
username = "example_user"
password = "example_password"
# 加密过程
salt = generate_salt()
hashed_password = hashlib.pbkdf2_hmac('sha256', password.encode(), salt.encode(), 10000) # 使用bcrypt、scrypt等更为安全的迭代哈希算法
# 存储数据(假设我们有一个字典存储数据库)
users_data = {
username: {
'salt': salt,
'hashed_password': hashed_password.hex() # 将二进制转换为十六进制便于存储
}
}
# 验证用户输入的密码
entered_password = input("Enter your password for verification: ")
entered_hashed_password = hashlib.pbkdf2_hmac('sha256', entered_password.encode(), users_data[username]['salt'].encode(), 10000)
if entered_hashed_password.hex() == users_data[username]['hashed_password']:
print("Password is correct.")
else:
print("Incorrect password.")
阅读全文