

Python,速成心法
敲代码,查资料,问度娘
练习,探索,总结,优化

★★★★★博文创作不易,源码使用过程中,如有疑问的地方,欢迎大家指正留言交流。喜欢的老铁可以多多点赞+收藏分享+置顶,小红牛在此表示感谢。★★★★★
Python模块教程:ctypes模块示例演示(用Python调用C 语言)

以下是一个整合后的综合示例,涵盖了 hashlib 的常用功能:基本哈希、多种算法、流式更新、加盐、PBKDF2 密钥派生、支持的算法列表等。
↓ 源码如下 ↓
# -*- coding: utf-8 -*-# @Author : 小红牛# 微信公众号:wdPythonimport hashlibimport os# ====================== 1. 基本哈希计算 ======================print("=" * 50)print("1. 基本哈希计算")data = b"Hello, world!"md5 = hashlib.md5()md5.update(data)print(f"MD5 (hex): {md5.hexdigest()}")print(f"MD5 (bytes): {md5.digest()}")# 简便写法sha256_simple = hashlib.sha256(b"Hello, world!").hexdigest()print(f"SHA256 (简便): {sha256_simple}\n")# ====================== 2. 多种哈希算法 ======================print("2. 多种哈希算法")text = b"Python hashlib"print(f"原始数据: {text.decode()}")print(f"MD5 : {hashlib.md5(text).hexdigest()}")print(f"SHA-1 : {hashlib.sha1(text).hexdigest()}")print(f"SHA-256 : {hashlib.sha256(text).hexdigest()}")print(f"SHA-512 : {hashlib.sha512(text).hexdigest()}")print(f"SHA3-256: {hashlib.sha3_256(text).hexdigest()}")print(f"BLAKE2b : {hashlib.blake2b(text).hexdigest()}\n")# ====================== 3. 流式更新(模拟大文件) ======================print("3. 流式更新(模拟大文件分块)")def hash_file(filename, algo='sha256'):"""计算文件的哈希值,支持分块读取"""h = hashlib.new(algo)try:with open(filename, 'rb') as f:for chunk in iter(lambda: f.read(4096), b''):h.update(chunk)return h.hexdigest()except FileNotFoundError:return f"文件 {filename} 不存在,跳过演示"# 创建一个临时测试文件(演示用)test_file = "temp_hash_demo.txt"with open(test_file, 'w') as f:f.write("This is a test file for hashlib demo.")print(f"创建临时文件: {test_file}")print(f"文件 SHA256: {hash_file(test_file, 'sha256')}")print(f"文件 MD5 : {hash_file(test_file, 'md5')}")os.remove(test_file) # 清理临时文件print()# ====================== 4. 加盐哈希 ======================print("4. 加盐哈希(防彩虹表)")password = "my_secret"salt = "random_salt_123"salted = (salt + password).encode('utf-8')hashed = hashlib.sha256(salted).hexdigest()print(f"密码: {password}")print(f"盐值: {salt}")print(f"SHA256(盐+密码): {hashed}\n")# ====================== 5. PBKDF2 密钥派生(慢哈希) ======================print("5. PBKDF2(抗暴力破解)")password = b"password123"salt = os.urandom(16) # 随机生成16字节盐dk = hashlib.pbkdf2_hmac('sha256',password,salt,100000, # 迭代次数,生产环境建议至少 100,000 以上dklen=32)print(f"密码: {password.decode()}")print(f"随机盐 (hex): {salt.hex()}")print(f"派生密钥 (hex): {dk.hex()}\n")# ====================== 6. 支持的算法列表 ======================print("6. 支持的哈希算法")print(f"当前平台所有可用算法: {hashlib.algorithms_available}")print(f"保证存在的算法: {hashlib.algorithms_guaranteed}\n")# ====================== 7. 使用 new() 动态创建对象 ======================print("7. 使用 new() 动态创建")algo_name = 'sha3_512'h = hashlib.new(algo_name)h.update(b'dynamic hash')print(f"{algo_name} 结果: {h.hexdigest()}")
完毕!!感谢您的收看
--------★★历史博文集合★★--------
