当前位置:   article > 正文

Python MD5 加密、解密详解(hashlib)_本地数据库配置

本地数据库配置

1 概述

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

1.1 hashlib 库

> pip install hashlib
  • 1

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'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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)  # 算法名称
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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}')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/470039
推荐阅读
相关标签
  

闽ICP备14008679号