Python中MD5和base64加密
作者:互联网
1.md5和base64区别:
MD5:
1、MD5是一种信息摘要算法,具有不可逆性。
2、任意长度的明文字符串,加密后得到的密文字符串是长度固定的。
Base64:
1、可逆性。
2、可以将图片等二进制文件转换为文本文件。
python中digest()和hexdigest()区别:
hash.digest()
返回摘要,作为二进制数据字符串值
hash.hexdigest()
返回摘要,作为十六进制数据字符串值
md5加密示例:
import hashlib
md5 = hashlib.md5() # 创建一个hashlib.md5()对象
md5.update("a".encode('utf-8')) # 采用utf-8编码将str类型转换成bytes类型
print(f"digest结果:{md5.digest()}")
print(f"hexdigest结果:{md5.hexdigest()}")
输出结果:
digest结果:b'\x0c\xc1u\xb9\xc0\xf1\xb6\xa81\xc3\x99\xe2iw&a'
hexdigest结果:0cc175b9c0f1b6a831c399e269772661
不管被加密数据的长度为多少,经过md5加密后得到的16进制的数据(md5.hexdigest()),它的长度是固定为32位
注意:区分加密是hash.digest() 还是hash.hexdigest()
base64编码:
import base64
result = base64.b64encode("a".encode("utf-8")) # 被编码的参数必须是bytes类型
print(f"base64编码后的结果:{result.decode()}")
print(f"base64解码后的结果:{base64.b64decode(result).decode()}")
输出结果:
base64编码后的结果:YQ==
base64解码后的结果:a
先进行md5加密,再将加密结果进行base64编码:
import hashlib
import base64
md5 = hashlib.md5()
md5.update('a'.encode('utf-8'))
d1 = md5.digest()
d2 = md5.hexdigest()[8:-8]
d3 = md5.hexdigest()
print(f"a 二进制md5加密结果:{d1}")
print(f"a 16位md5加密结果:{d2}")
print(f"a 32位md5加密结果:{d3}")
print(f"a 二进制md5加密结果再进行base64编码:{base64.b64encode(d1)}")
print(f"a 16位md5加密结果再进行base64编码:{base64.b64encode(d2.encode())}")
print(f"a 32位md5加密结果再进行base64编码:{base64.b64encode(d3.encode())}" )
输出结果:
a 二进制md5加密结果:b'\x0c\xc1u\xb9\xc0\xf1\xb6\xa81\xc3\x99\xe2iw&a'
a 16位md5加密结果:c0f1b6a831c399e2
a 32位md5加密结果:0cc175b9c0f1b6a831c399e269772661
a 二进制md5加密结果再进行base64编码:b'DMF1ucDxtqgxw5niaXcmYQ=='
a 16位md5加密结果再进行base64编码:b'YzBmMWI2YTgzMWMzOTllMg=='
a 32位md5加密结果再进行base64编码:b'MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE='
标签:加密,结果,Python,base64,hexdigest,print,MD5,md5 来源: https://blog.csdn.net/qq_37556007/article/details/114881140