转自:https://www.cnblogs.com/zhuhaofeng/p/9567994.html
python的hashlib库的md5摘要是不可反解的,非常安全
摘要是单项不可逆的
加密是可以解密的,是双向的
haxdigest hax是16进制,digest是摘要
#md5加密是不可反解的
import hashlib
#实例化对象
obj=hashlib.md5() #先创建一个md5的对象
#写入要加密的字节
obj.update("admin".encode("utf-8")) #对谁加密就把谁写道前面,python3中必须是字节,所以必须用.encode()
#获取密文
secret=obj.hexdigest()
print(secret)
##############################################################
import hashlib
obj=hashlib.md5(b'12334') #实例化md5的时候可以给传个参数,这叫加盐
obj.update("admin".encode("utf-8")) #是再加密的时候传入自己的一块字节,
secret=obj.hexdigest()
print(secret)
##############################################################
#因为用户密码已经被加密过了,而且是加盐的,所以再用户验证的时候用字符串或者直接的加密的的字节都不能正确判断,只能用加盐的字节所判断
import hashlib
SALT = b'2erer3asdfwerxdf34sdfsdfs90'
def md5(pwd):
# 实例化对象
obj = hashlib.md5(SALT)
# 写入要加密的字节
obj.update(pwd.encode('utf-8'))
# 获取密文
return obj.hexdigest()
user = input("请输入用户名:")
pwd = input("请输入密码:")
if user == 'oldboy' and md5(pwd) == 'c5395258d82599e5f1bec3be1e4dea4a':
print('登录成功')
else:
print('登录失败')