加密模块,内置不少算法,最经常使用的是MD5python
摘要算法:算法
import hashlib # 获取一个hashlibMD5对象 res = hashlib.md5()
import hashlib # 获取一个hashlibMD5对象,并进行赋值,若不赋值后续直接引用,默认加密的是空字符串 res = hashlib.md5() #将字符串转换从bytes类型 update必定要传入bytes类型 l1 = '1234' res.update(l1.encode('utf-8')) # 将字符串进行加密 jm_md = res.hexdigest() print(jm_md) # 获取一个hashlibMD5对象,若不赋值后续直接引用,后续开新的内存空间默认加密的是空字符串 hashlib.md5().update('123456'.encode('utf-8')) hashlib.md5().hexdigest() # ---> 后续开新的内存空间,默认的加密空字符串
以上操做可能会被撞库破解真实密码加密
防止撞库文件:加盐(在原传入的数据后追加固定的一串数据)code
import hashlib # 获取一个hashlibMD5对象 res = hashlib.md5() # 在对象中传入字符 update必定要传入bytes类型 l1 = '1234' res.update(l1.encode('utf-8')) # 创造盐 sal = 'Mr沈' # 加盐 res.update(sal.encode('utf-8')) # 加密 jm2_md = res.hexdigest() print(jm2_md)
# 模拟用户登陆操做 # 加密密码 def md5_obj(n): md5 = hashlib.md5() str1 = n md5.update(str1.encode('utf8')) sal = '沈勇牛批' md5.update(sal.encode('utf8')) res = md5.hexdigest() return res # 拼接用户名和密码 res = md5_obj('1234') str2 = f'sheny:{res}' # 写入文件中 with open('user.txt', 'w', encoding='utf8') as f: f.write(str2) # 读取出用户名和密码 with open('user.txt', 'r', encoding='utf8') as f: user_read = f.read() # 解压用户名和密码 name, pwd = user_read.split(":") # 登陆判断 while True: username = input('输入用户名') password = input('请输入密码') if username == name and md5_obj(password) == pwd: print('登陆成功') break else: print('登陆失败')