编程语言
首页 > 编程语言> > Python中MD5和base64加密

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