1 概述

MD5
Message Digest Algorithm 5:信息摘要算法 5
加密:结果是一个 128 位的二进制数,通常以 32 位 16 进制数呈现
解密:不可逆,可通过密码字典、枚举等形式破解

1.1 hashlib 库

> pip install hashlib

1.2 在线加密、解密

2 hashlib 模块

2.1 hashlib 模块的两个常量属性

属性描述
hashlib.algorithms_guaranteed所有平台中,模块支持的 hash 算法列表
hashlib.algorithms_available当前 Python 解释器环境中,模块支持的 hash 算法列表
>>> hashlib.algorithms_guaranteed
{'sha3_512', 'shake_128', 'sha3_256', 'sha3_384', 'sha256', 
 'md5', 'sha1', 'sha3_224', 'sha384', 'blake2s', 'shake_256', 
 'sha224', 'sha512', 'blake2b'}

>>> hashlib.algorithms_available
{'sha3_384', 'sha256', 'sha384', 'sha512_224', 'sha512',
 'sha3_512', 'sha1', 'md5-sha1', 'sha3_256', 'sha224', 
 'md4', 'sm3', 'ripemd160', 'sha512_256', 'sha3_224', 
 'whirlpool', 'shake_128', 'md5', 'mdc2', 'blake2s', 'shake_256', 'blake2b'}

2.2 hash 对象的属性及方法

import hashlib
from _hashlib import HASH

# 1.获取 hash 对象
# 方式1:h = hashlib.md5()  # hash 对象
# 方式2:指定 HASH 类型,方便代码提示
h: HASH = hashlib.md5()  # hash 对象

# 2.添加信息
h.update(b'123abc')

# 3.获取信息摘要
print(h.digest())  # 作为字节对象返回摘要值
print(h.hexdigest())  # 以十六进制数字字符串的形式返回摘要值

# 4.其它信息
print(h.digest_size)  # 信息摘要的位长
print(h.block_size)  # 信息摘要的内部块大小
print(h.name)  # 算法名称

3 示例

3.1 加密

import hashlib


# 加密
def md5_encrypt(password):
    md5 = hashlib.md5()
    md5.update(password.encode("utf-8"))
    return md5.hexdigest()


if __name__ == '__main__':
    password = '123'
    password_encrypt = md5_encrypt(password)
    print(f'加密前:{password},加密后:{password_encrypt}')

3.2 解密

import hashlib


# 加密
def md5_encrypt(password):
    md5 = hashlib.md5()
    md5.update(password.encode("utf-8"))
    return md5.hexdigest()


# 解密(不可逆,可用密码字典破解)
def md5_decrypt(password, md5_str):
    return md5_encrypt(password) == md5_str


if __name__ == '__main__':
    print(md5_decrypt('123', '202cb962ac59075b964b07152d234b70'))
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐