Python中hashlib模块 - 哈希加密
哈希介绍
hashlib模块是用来进行哈希操作。哈希:数据一种将任意长度的输入映射为固定长度输出的算法。通常是用来验证数据的完整性、安全存储密码等。内容常常是一串随机的字母和数字组成。
常用方法
1)导入hashlib库
import hashlib
2)准备数据
## 需要数据的类型必须为 bytes
sha256_data = hashlib.sha256("python".encode("utf-8"))
# 或者
sha256_data = hashlib.sha256(b'python')
bytes类型:是python内置的二进制序列类型,不可变。只要碰到前缀带b的字面量,就会将它变成不可变的bytes对象存进常量池。
3)可更新数据
sha256_data.update(b'java')
sha256_data.update(b'hello world')
sha256_data.update(b'mysql')
4)取结果
sha256_data.hexdigest()
# 或者
sha256_data.digest()
hexdigest():获取十六进制的哈希值
digest():获取二进制的哈希值
完整代码
import hashlib
sha256_data = hashlib.sha256(b"python") ## 或 sha256_data = hashlib.sha256("python".encode("utf-8"))# sha256_data.update(b'java')print(sha256_data.hexdigest()) ## 十六进制
print(sha256_data.digest()) ## 二进制
常见的哈希算法以及含义
sha256与sha512最经常使用。
算法名称 | 摘要长度(位) | 输出长度(字节) | 安全性 | 用途 |
md5 | 128 | 16 | 不安全 | 数据完整性验证、密码存储等 |
sha1 | 160 | 20 | 不安全 | 数据完整性验证、密码存储等 |
sha224 | 224 | 28 | 低 | 数据完整性验证、数字签名等 |
sha256 | 256 | 32 | 中等 | 数据完整性验证、数字签名等 |
sha384 | 384 | 48 | 高 | 数字签名、加密算法等 |
sha512 | 512 | 64 | 高 | 数字签名、加密算法等 |
sha3_224 | 224 | 28 | 高 | 未来标准的 SHA-3 家族成员,适用于数字签名等 |
sha3_256 | 256 | 32 | 高 | 未来标准的 SHA-3 家族成员,适用于数字签名等 |
sha3_384 | 384 | 48 | 高 | 未来标准的 SHA-3 家族成员,适用于数字签名等 |
sha3_512 | 512 | 64 | 高 | 未来标准的 SHA-3 家族成员,适用于数字签名等 |
shake_128 | 可变 | 可变 | 高 | SHAKE 系列是 SHA-3 家族的可变长度版本,适用于各种应用 |
shake_256 | 可变 | 可变 | 高 | SHAKE 系列是 SHA-3 家族的可变长度版本,适用于各种应用 |