模块介绍
hashlib
模块是 Python 的标准库之一,提供了多种安全哈希和消息摘要算法,例如 SHA1、SHA224、SHA256、SHA384、SHA512、MD5 等。通过这些算法,开发者可以生成消息摘要以验证数据的完整性和安全性。hashlib
模块在 Python 3 中已经是内置的,不需要额外安装。适配的 Python 版本为 Python 3.0 及以上。
应用场景
hashlib
模块主要用于以下几个场景:
- 数据完整性验证:确保数据在传输或存储过程中没有被篡改。
- 密码存储:通过哈希算法将密码加密存储,保证用户密码的安全。
- 数字签名:验证数据和身份真实性。
- 文件完整性检查:下载文件或软件时进行校验。
安装说明
由 hashlib
是 Python 的内置模块,默认已安装,无需额外安装。可以通过以下方式验证是否安装成功:
1 2
| import hashlib print(hashlib.algorithms_available)
|
用法举例
1. 数据完整性验证
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import hashlib
def hash_data(data): """哈希数据,返回摘要""" sha256 = hashlib.sha256() sha256.update(data.encode('utf-8')) return sha256.hexdigest()
original_data = "Hello, World!" hash_result = hash_data(original_data) print(f"数据摘要: {hash_result}")
received_data = "Hello, World!" received_hash_result = hash_data(received_data) if received_hash_result == hash_result: print("数据完整,无篡改!") else: print("数据被篡改!")
|
2. 密码存储
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import hashlib import os
def hash_password(password): """生成密码哈希及盐值""" salt = os.urandom(16) pwd_hash = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000) return salt + pwd_hash
def verify_password(stored_password, input_password): """验证密码是否正确""" salt = stored_password[:16] stored_pwd_hash = stored_password[16:] pwd_hash = hashlib.pbkdf2_hmac('sha256', input_password.encode('utf-8'), salt, 100000) return pwd_hash == stored_pwd_hash
stored_password = hash_password('super_secure_password') print(f"存储的密码哈希:{stored_password}")
is_valid = verify_password(stored_password, 'super_secure_password') print(f"密码验证通过: {is_valid}")
|
3. 文件完整性检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import hashlib
def hash_file(filepath): """生成文件的哈希值""" sha256 = hashlib.sha256() with open(filepath, 'rb') as f: while chunk := f.read(4096): sha256.update(chunk) return sha256.hexdigest()
file_path = 'example.txt' file_hash = hash_file(file_path) print(f"文件 '{file_path}' 的哈希值为: {file_hash}")
downloaded_file_path = 'downloaded_example.txt' downloaded_file_hash = hash_file(downloaded_file_path) if downloaded_file_hash == file_hash: print("文件下载完整,无篡改!") else: print("文件已被篡改!")
|
在此介绍的哈希算法通过 hashlib
提供的高级应用方式,充分展示了如何在 Python 中使用哈希算法来保护数据的完整性和安全性。确保在敏感信息存储和数据传输中通过哈希算法来提高系统的安全性。
强烈建议大家关注本人的博客 —— 全糖冲击博客。关注我的博客,你将获取最新和最全面的 Python 标准库使用教程,极大地方便了查询和学习。不仅如此,还提供了众多实战案例,帮助你更好地理解并应用各个模块。感兴趣的朋友们千万不要错过哦!关注我的博客,让我们共同进步,共同成长!
软件版本可能变动
如果本文档不再适用或有误,请留言或联系我进行更新。让我们一起营造良好的学习氛围。感谢您的支持! - Travis Tang