欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > python常用内建模块:hashlib

python常用内建模块:hashlib

2025/5/5 9:15:51 来源:https://blog.csdn.net/2301_78045723/article/details/144748912  浏览:    关键词:python常用内建模块:hashlib

hashlib 是 Python 的一个内建模块,用于提供常见的消息摘要算法(也称为哈希算法)。这些算法可以用于确保数据完整性、进行密码存储(通过加盐处理)等。hashlib 支持多种哈希算法,包括 MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512 等。

以下是一些使用 hashlib 模块的基本示例:

1. 导入模块

 

python复制代码

import hashlib

2. 使用 MD5 算法

 

python复制代码

# 创建一个md5对象
md5 = hashlib.md5()
# 需要被哈希的字节数据
data = b"Hello, World!"
# 更新哈希对象
md5.update(data)
# 获取十六进制格式的哈希值
md5_hex = md5.hexdigest()
print(f"MD5: {md5_hex}")

3. 使用 SHA-256 算法

 

python复制代码

# 创建一个sha256对象
sha256 = hashlib.sha256()
# 需要被哈希的字节数据
data = b"Hello, World!"
# 更新哈希对象
sha256.update(data)
# 获取十六进制格式的哈希值
sha256_hex = sha256.hexdigest()
print(f"SHA-256: {sha256_hex}")

4. 使用哈希算法进行密码存储(加盐处理)

在实际应用中,存储密码时通常会使用哈希算法,并加上一个“盐”(salt),以增加破解难度。

 

python复制代码

import os
import hashlib
# 生成一个随机盐
salt = os.urandom(16)
print(f"Salt: {salt.hex()}")
# 假设密码是 "mysecretpassword"
password = b"mysecretpassword"
# 将盐和密码结合起来
hashed = hashlib.pbkdf2_hmac('sha256', password, salt, 100000)
print(f"Hashed: {hashed.hex()}")
# 验证密码时,使用相同的盐和迭代次数
def verify_password(stored_hashed, salt, provided_password):
return stored_hashed == hashlib.pbkdf2_hmac('sha256', provided_password, salt, 100000)
# 验证密码
is_correct = verify_password(hashed, salt, b"mysecretpassword")
print(f"Password correct: {is_correct}")

5. 支持的哈希算法

你可以通过 hashlib.algorithms_available 查看当前 Python 环境支持的所有哈希算法。

 

python复制代码

print(hashlib.algorithms_available)

注意

  1. 不可逆性:哈希算法是单向的,即从哈希值无法反推出原始数据。
  2. 固定长度:无论输入数据长度如何,哈希值长度都是固定的。
  3. 冲突概率:理论上存在哈希冲突(不同的数据产生相同的哈希值),但在实际应用中,冲突概率极低。
  4. 安全性:某些哈希算法(如 MD5 和 SHA-1)已经被认为不安全,建议使用 SHA-256 或更高版本的 SHA 算法。

hashlib 模块是一个强大且灵活的工具,适用于各种需要数据完整性验证和加密哈希的场合。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词