一、MD5加密
python中使用自带的加密模块,hashlib进行MD5加密
知识背景:对于用户敏感信息,如登录密码,在明文传递参数时,可能会被别人窃取,需要通过MD5加密来加密数据
MD5加密特性:无论是字符串、数字、汉字、文件等,加密完均是18位的数字和字符串组合,且加密后无法解密,网站的解密一般通过撞库来实现。
import hashlib s = ['汉字','asdnecc',1234]#任何字符串,数字,汉字,文件等,加密完都是18位字符串 for i in s: m = hashlib.md5(str(i).encode())#入参必须通过encode()方法转换为字节型 result = m.hexdigest()#通过十六进制格式返回 print(result)
返回结果:
8a97ee1fcddc24870fb66b4b58c41214 1f85206057bcc8a7e9543a94ac60c96e 81dc9bdb52d04dc20036dbd8313ed055
二、加盐
背景:由于用户可能设置比较简单的密码如123456,654321,等有比较强规则的数据时,由于MD5加密后是固定字符串,很容易被其他人猜出密码,所以需要通过加盐操作来对数据加密
salt = '21385#$%&*' password = input('password:') password +=salt m = hashlib.md5(password.encode()) result = m.hexdigest() print(result)
返回结果:
password:123 21d01ea49572576a3e09dc71709b05d1
三、base64位加密
python中使用自带的base64模块进行base加密
base64加密特性:
1、加密后的数据,可以通过解密得到原数据
2、加密后的数据长度不是固定值,随着加密字符串的大小而变化
import base64 #能加密 解密,末尾有等于号一般都是base64加密 #加密 s = 'https://www.baidu.com' b = base64.b64encode(s.encode())#接收bytes入参,返回bytes加密结果 t = b.decode()#返回的bytes数据通过decode()转换为字符串 print(t) #解密 b = base64.b64decode(t) print(b.decode())
返回结果:
aHR0cHM6Ly93d3cuYmFpZHUuY29t https://www.baidu.com