Python 生成随机盐的SHA-256怎么验证
时间: 2024-08-02 11:01:11 浏览: 126
在Python中,生成随机盐并将其应用于SHA-256哈希用于密码安全。首先,你需要导入必要的库,如`hashlib`(处理哈希函数)和`secrets`(提供随机字符串)。以下是基本步骤:
1. 使用`secrets`模块创建一个随机字符串作为盐(salt),它通常是一个固定长度的字符串,例如8字节。
```python
import secrets
random_salt = secrets.token_urlsafe(16) # 生成16字节的随机盐
```
2. 将用户输入的原始密码和盐一起传递给SHA-256哈希函数,这里使用`hashlib.sha256()`。
```python
def hash_password(password, salt):
password_with_salt = password + salt
hashed_password = hashlib.sha256(password_with_salt.encode()).hexdigest()
return hashed_password
```
3. 当用户注册时,生成新的哈希值;当登录请求时,先检查提供的密码(用户输入)与存储的哈希值是否匹配。由于你是将随机盐附加到原始密码上再计算哈希,所以需要将输入的密码和盐一起解密。
```python
# 假设你已经保存了加密后的哈希值和对应的盐
stored_hashed_password = 'your_stored_hashed_password'
stored_salt = 'your_stored_salt'
# 用户提交的密码
input_password = input("Enter your password: ")
# 创建待比较的哈希值
input_password_with_salt = input_password + stored_salt
input_hashed_password = hashlib.sha256(input_password_with_salt.encode()).hexdigest()
# 验证
if input_hashed_password == stored_hashed_password:
print("Password is correct.")
else:
print("Incorrect password.")
```
阅读全文