Python-常用的两个Hash模块

1. CRYPT模块

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

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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值