Python hashlib 模块
hashlib 模块提供了常见的哈希算法的实现,如 MD5、SHA-1、SHA-256 等。要使用函数必须先导入:代码语言:javascriptAI代码解释。
hashlib 模块提供了常见的哈希算法的实现,如 MD5、SHA-1、SHA-256 等。
要使用 hashlib 函数必须先导入:
代码语言:javascript
AI代码解释
import hashlib
查看 hashlib 模块中的内容:
实例
代码语言:javascript
AI代码解释
>>> import hashlib
>>> dir(hashlib)
['__all__', '__block_openssl_constructor', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']
以下是 hashlib 模块的一些常用方法和哈希算法的简介:
常用方法
hashlib.new(name, data=None): 创建一个哈希对象。
name 参数是哈希算法的名称,data 参数是要被哈希的数据。
实例
代码语言:javascript
AI代码解释
import hashlib
sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'RUNOOB')
print(sha256_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8
hashlib.md5() / hashlib.sha1() / hashlib.sha256() / ...: 直接使用特定的哈希算法创建哈希对象。
实例
代码语言:javascript
AI代码解释
import hashlib
md5_hash = hashlib.md5(b'RUNOOB')
print(md5_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
18fa661e2a4a7dd6471cc1407290cf6e
哈希对象方法
update(data): 更新哈希对象的消息内容。
实例
代码语言:javascript
AI代码解释
import hashlib
sha256_hash = hashlib.sha256()
sha256_hash.update(b'Hello, ')
sha256_hash.update(b'Runoob!')
print(sha256_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
1b56561022276e9a5a8e1cda72e1b39fca6f6074326a74d39f6dfd9540c8ecd7
hexdigest(): 获取十六进制表示的哈希值。
实例
代码语言:javascript
AI代码解释
import hashlib
md5_hash = hashlib.md5(b'RUNOOB')
print(md5_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
18fa661e2a4a7dd6471cc1407290cf6e
digest(): 获取二进制表示的哈希值。
实例
代码语言:javascript
AI代码解释
import hashlib
sha1_hash = hashlib.sha1(b'RUNOOB')
print(sha1_hash.digest())
输出结果为:
代码语言:javascript
AI代码解释
b'4\x17\t\xd0\xdb\xc2f3/\x1c\xbc\xd8\xc2_\xd4\xa0T\x12\xb7\xd4'
常见哈希算法
MD5
实例
代码语言:javascript
AI代码解释
import hashlib
md5_hash = hashlib.md5(b'RUNOOB')
print(md5_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
18fa661e2a4a7dd6471cc1407290cf6e
SHA-1
实例
代码语言:javascript
AI代码解释
import hashlib
sha1_hash = hashlib.sha1(b'RUNOOB')
print(sha1_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
341709d0dbc266332f1cbcd8c25fd4a05412b7d4
SHA-256
实例
代码语言:javascript
AI代码解释
import hashlib
sha256_hash = hashlib.sha256(b'RUNOOB')
print(sha256_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8
SHA-512
实例
代码语言:javascript
AI代码解释
import hashlib
sha512_hash = hashlib.sha512(b'RUNOOB')
print(sha512_hash.hexdigest())
输出结果为:
代码语言:javascript
AI代码解释
7cfe50493eebd48ee7330c797459c2d0d5ca943bd1c84ad7a0b6783b11cd49d06b4a1dc84ee9ea5e20d0bfedbdb67e716500a20e5870abecea3f32dc8484a811
在实际应用中,选择合适的哈希算法取决于具体的需求。需要注意的是,MD5 和 SHA-1 已经被认为不安全,特别是在安全领域,推荐使用更强大的算法,如 SHA-256 或 SHA-512。
Python hashlib 模块中常见的哈希算法及其含义:
|
算法名称 |
摘要长度(位) |
输出长度(字节) |
安全性 |
用途 |
|---|---|---|---|---|
|
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 家族的可变长度版本,适用于各种应用 |
说明:
- 摘要长度(位): 表示哈希算法输出的摘要长度,以位为单位。
- 输出长度(字节): 表示哈希算法输出的摘要长度,以字节为单位。
- 安全性: 表示哈希算法的安全性级别,包括 "不安全"、"低"、"中等"、"高"。这是一个一般性的分类,具体的安全性还要考虑算法的用途和具体的攻击场景。
更多推荐


所有评论(0)