1. CRYPT模块
【常用方法/常量介绍:】
| 名称 | 类型 | 描述 |
|---|---|---|
| crypt() | 方法 | 对指定内容进行hash加密 |
| methods() | 方法 | 返回可以用到的加密算法 |
| mksalt() | 方法 | 根据加密算法生成salt |
| METHOD_MD5 | 常量 | md5加密算法 |
| METHOD_SHA256 | 常量 | sha256加密算法 |
| METHOD_SHA512 | 常量 | sha512加密算法 |
crypt.METHOD_SHA512 模块化加密格式方法,具有16个字符的salt和86个字符的哈希值。这是最强的方法。
crypt.METHOD_SHA256 另一种Modular Crypt Format方法,包含16个字符的salt和43个字符的hash。
crypt.METHOD_MD5 另一种Modular Crypt Format方法,带有8个字符的salt和22个字符的hash。
crypt.METHOD_CRYPT 传统方法使用2个字符的salt和13个字符的哈希值。这是最弱的方法。
【使用说明:】
crypt.crypt(plaintext,salt)
如果不指定salt,系统就会调用crypt.mksalt()生成一个salt
# 生成salt
salt = crypt.mksalt(crypt.METHOD_SHA256)
salt # '$5$4l.2pWyDPUQR5IRx'
# 需要hash的文本
plaintext = 'mypassword'
# 进行hash
hp = crypt.crypt(plaintext,salt)
hp # '$5E7Spixsc5OI'
2.HASHLIB
【常用方法介绍:】
| 名称 | 描述 |
|---|---|
| md5() | 利用md5算法加密 |
| sha1() | 利用sha1算法加密 |
| sha224() | 利用sha224算法加密 |
| sha256() | 利用sha256算法加密 |
| sha384() | 利用sha384算法加密 |
| sha512() | 利用sha512算法加密 |
| update(arg) | 可以重复利用指定了特殊加密算法的Hash对象,对arg进行加密 |
| digest() | 以字符形式返回加密内容 |
| hexdigest() | 以16进制形式返回加密内容 |
| copy() | 为了达到重复利用Hash对象的目的,而克隆Hash对象 |
散列算法,总是存在该模块中的构造是 sha1(),sha224(),sha256(),sha384(), sha512(),blake2b(),和blake2s()。 md5()通常也是可用的,但如果您使用的是罕见的“FIPS兼容”Python版本,它可能会丢失。根据Python在您的平台上使用的OpenSSL库,还可以使用其他算法。在大多数平台上 sha3_224(),sha3_256(),sha3_384(),sha3_512(), shake_128(),shake_256()也可提供。
【使用说明:】
plaintext = 'mypassword'
# 直接hash
hashlib.sha256(plaintext.encode('utf-8')) # <sha256 HASH object @ 0x105300da0>
'''
#sha256不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来
'''
hashlib.sha256(plaintext.encode('utf-8')).digest() # b'\x89\xe0\x156\xac ry@\x9dM\xe1\xe5%>\x01\xf4\xa1v\x9eim\xb0\xd6\x06,\xa9\xb8\xf5gg\xc8'
hashlib.sha256(plaintext.encode('utf-8')).hexdigest() # '89e01536ac207279409d4de1e5253e01f4a1769e696db0d6062ca9b8f56767c8'
# 设置加密参数,通过update实现hash
plaintext = 'mypassword'
hb = hashlib.sha256('abc'.encode('utf-8')) # <sha256 HASH object @ 0x10bbbf558>
''' 如果添加参数,那么sha256将生成一个自定的规则,遵守自定规则,生成同一个对应关系,
就是在原先加密的基础上再加密一层,这样的话参数只有自己知道,防止被破解。
'''
hb.update(plaintext.encode('utf-8'))
hb.digest() # b'\xbax\x16\xbf\x8f\x01\xcf\xeaAA@\xde]\xae"#\xb0\x03a\xa3\x96\x17z\x9c\xb4\x10\xffa\xf2\x00\x15\xad'
hb.hexdigest() # 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'
本文深入探讨了密码学中各种加密方法,包括CRYPT模块的多种加密算法如MD5、SHA256、SHA512,以及HASHLIB模块提供的散列算法如sha256、sha512等。详细介绍了每种算法的使用方法和应用场景,帮助读者理解如何在Python中实现数据加密。

2万+

被折叠的 条评论
为什么被折叠?



