43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import hashlib
|
|
import os
|
|
|
|
class PasswordLock:
|
|
def __init__(self):
|
|
self.salt = b'\xb2S"e}\xdf\xb0\xfe\x9c\xde\xde\xfe\xf3\x1d\xdc>'
|
|
|
|
def hash_password(self, password):
|
|
# 将密码转换为字节流
|
|
password_bytes = password.encode('utf-8')
|
|
|
|
# 将盐值和密码组合并进行哈希
|
|
hash_obj = hashlib.sha256(self.salt + password_bytes)
|
|
password_hash = hash_obj.hexdigest()
|
|
|
|
return password_hash
|
|
|
|
def verify_password(self, input_password, stored_hash):
|
|
# 使用相同的盐值对输入密码进行哈希
|
|
calculated_hash = self.hash_password(input_password)
|
|
|
|
# 比较计算出的哈希值与存储的哈希值
|
|
return calculated_hash == stored_hash
|
|
|
|
|
|
# 使用示例
|
|
if __name__ == "__main__":
|
|
lock = PasswordLock()
|
|
|
|
# 用户设置密码
|
|
user_password = input("请设置一个三位数密码: ")
|
|
|
|
# 加密密码
|
|
password_hash = lock.hash_password(user_password)
|
|
print(f"密码已加密,哈希值: {password_hash}")
|
|
|
|
# 验证密码
|
|
test_password = input("请输入密码进行验证: ")
|
|
if lock.verify_password(test_password, password_hash):
|
|
print("密码验证成功!")
|
|
else:
|
|
print("密码验证失败!")
|