hashlib模块
hashlib是一个加密模块,内置了很多算法
-MD5 :不可解密的算法(2018之前)
-sha_256(了解)
摘要算法:
摘要是从某个内容中获取的加密字符串,摘要一样,内容就一样:保证唯一性
-密文密码就是一个摘要
import hashlib
md5_obj = hashlib.md5()
print(type(md5_obj))
>> <class '_hashlib.HASH'>
str1 = '1234'
#update 中一定要传入bytes类型数据
md5_obj.update(str1.encode('utf-8'))
#得到一个加密后的字符串
res = md5_obj.hexdigest()
print(res)
>>81dc9bdb52d04dc20036dbd8313ed055
#以上操作撞库有可能会被破解密码
#防止撞库 :加盐
import hashlib
def pwd_md5(pwd)
md5_obj = hashlib.md5()
str1 = pwd
md5_obj.update(str.encode('utf-8'))
#创造盐
sal = '尼玛嗨尼玛嗨'
#加盐
md5_obj.update(sal.encode('utf-8'))
res = md5_obj.hexdigest()
return res
password = pwd_md5(123)
print(password)
>>>4100f0a6cc2b178ab3a0ffca546e76b8
#储存用户加密密码
user_str1 = f'lzn:123'
user_str2 = f'lzn:{password}'
with open('nmb.txt','w',encoding = 'utf-8')as f:
f.write(user_str2)
###模拟用户登录操作
import hashlib
#加密函数
def pwd_md5(pwd):
md5_obj = hashlib.md5()
str1 = pwd
md5_obj.update(str1.encode('utf-8'))
#创造盐
sal = '尼玛嗨尼玛嗨'
#加盐
md5_obj.update(sal.encode('utf-8'))
res = md5_obj.hexdigest()
return res
with open('nmb.txt','r',encoding='utf-8')as f:
user_str = f.read()
file_user,file_pwd = user_str.strip().split(':')
#用户输入用户名密码
username = input('input your username:').strip()
password = input('input your password:').strip()
#校验用户名与密码是否一致
if username == file_user and file_pwd == pwd_md5(password):
print('success')
else:
print('fail')