hashlib模块

本文介绍Python中使用hashlib模块实现SHA1、SHA224、SHA256、SHA384、SHA512及MD5算法的方法,并通过实例展示了如何为这些算法添加自定义key进行加密。此外,还介绍了使用hmac模块创建带key的哈希消息认证码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hashlib模块

python3主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

import hashlib
m1 = hashlib.md5()
m2 = hashlib.md5()
m1.update(b'bob')
m2.update('bob'.encode('utf8'))
print(m1.hexdigest())
print(m2.hexdigest())
9f9d51bc70ef21ca5c14f307980a29d8
9f9d51bc70ef21ca5c14f307980a29d8

对加密算法中添加自定义key再来做加密

hash1 = hashlib.sha256('2354sd%d^'.encode('utf8'))
hash1.update(b'bob')
print(hash1.hexdigest())
219daab2754338561d3662fab436349e13dd084fff1c4175296c5b20c8ee97e1

python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密:

import hmac
h1 = hmac.new(b'hello')
h1.update(b'bob')
print(h1.hexdigest())
fb01c4887c564af4506c7aeac00348c7
### Python中`hashlib`模块的安装与使用 #### 安装`hashlib` 值得注意的是,在Python的标准库中已经包含了`hashlib`模块,因此无需额外安装此模块[^4]。 #### 使用`hashlib`模块 为了说明如何使用该模块来执行哈希运算,下面给出一段简单的例子,演示了怎样创建一个SHA-1哈希对象并获取其十六进制表示: ```python import hashlib sha1_hash = hashlib.sha1(b'RUNOOB') print(sha1_hash.hexdigest()) ``` 这段代码展示了通过传递字节串给`hashlib.sha1()`方法来初始化一个新的SHA-1哈希对象,并调用`.hexdigest()`得到字符串形式的结果[^2]。 另外一种方式是利用`hashlib.new()`函数指定算法名称作为参数来构建相应的哈希处理器实例;这种方式对于那些可能不在当前环境中默认可用但是被支持的算法特别有用。例如: ```python new_sha1_hash = hashlib.new('sha1', b'RUNOOB') print(new_sha1_hash.hexdigest()) ``` 这里显示了两种不同的API风格实际上实现了相同的功能——它们都可用于生成特定类型的散列摘要[^3]。 最后,当涉及到实际应用时,比如校验文件完整性,可以通过读取整个文件内容分块更新到哈希对象上来完成更复杂的任务。如下所示是一个完整的示例程序片段,它能够比较本地文件的内容与其预期的SHA-256值是否匹配[^5]: ```python def verify_file(filepath, expected_hash): with open(filepath, 'rb') as f: file_hash = hashlib.sha256() while chunk := f.read(8192): file_hash.update(chunk) return file_hash.hexdigest() == expected_hash print(verify_file('example.zip', 'expected_sha256_hash_here')) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值