bcrypt 如果没有,需要安装 pip install bcrypt
代码定义了两个函数,是模拟php的两个加密、验证函数,可以用来跨语言验证密码。一般现在我们不建议使用md5 来对用户的密码进行加密了,所以模拟了php做了两个函数出来,可以用于用户密码加密、验证。
import hashlib
import bcrypt
def password_hash(password: str) -> str:
'''hash加密
'''
# 生成一个salt
salt = bcrypt.gensalt()
hashed = bcrypt.hashpw(password.encode(), salt)
return str(hashed, encoding='utf-8')
def password_verify(password: str, hash: str) -> bool:
''' 验证密码
'''
return bcrypt.checkpw(password.encode(), hash.encode())
if __name__ == '__main__':
# md5
res = hashlib.md5(b'123456').hexdigest()
print(res)
# sha1
res = hashlib.sha1(b'123456').hexdigest()
print(res)
# 密码加密
res = password_hash('123456')
print(res)
# 密码校验
password = '123456'
hash = '$2b$12$gxwIQDJu1vqE4zGGq1gR3e3RClPxAjsghHbgb52EnBHbdZo8iyFxK'
if password_verify(password, hash):
print('success')
else:
print('fail')