0

0

Python中hashlib的作用 加密哈希模块hashlib的常用算法实现

冰火之心

冰火之心

发布时间:2025-06-08 23:45:08

|

593人浏览过

|

来源于php中文网

原创

hashlib 是 python 中用于生成数据哈希值的标准库模块,主要作用是通过哈希算法将任意长度的数据转换为固定长度的摘要信息,常用于数据完整性校验和密码存储。1. hashlib 常用的哈希算法包括 md5、sha-1、sha-2(如 sha-256、sha-512)和 sha-3 等,其中 sha-256 输出 256 位,广泛用于安全场景;2. 生成哈希值的基本流程是导入模块并选择算法、初始化哈希对象、更新字节类型的数据、获取摘要结果,例如使用 hashlib.sha256() 和 .hexdigest() 方法;3. 加盐哈希通过加入随机生成的“盐”增强密码安全性,常用方法是 hashlib.pbkdf2_hmac(),结合盐值和迭代次数提高破解难度;4. 使用时应注意避免使用 md5 或 sha-1 存储密码,确保输入为字节类型,支持分段更新数据,并根据不同用途选择合适算法,如密码相关推荐使用 pbkdf2_hmac、bcrypt 或 scrypt,通用哈希则推荐 sha-256。

在Python中,hashlib 是一个用于生成数据哈希值的标准库模块。它的主要作用是将任意长度的数据(比如字符串、文件内容等)通过特定的哈希算法转换成固定长度的摘要信息。这个过程通常是不可逆的,常用于数据完整性校验、密码存储等场景。

下面介绍几个 hashlib 中常用的哈希算法及其使用方法。


1. hashlib常用哈希算法有哪些?

Python 的 hashlib 支持多种哈希算法,包括但不限于:

  • MD5
  • SHA-1
  • SHA-2(如 SHA-256、SHA-512)
  • SHA-3 等

这些算法的主要区别在于输出长度和安全性。例如:

立即学习Python免费学习笔记(深入)”;

  • MD5 输出128位(16字节),但已不推荐用于安全用途,容易被破解。
  • SHA-256 输出256位(32字节),目前广泛用于安全场景,如区块链、证书签名等。

你可以在代码中通过如下方式查看当前系统支持的哈希算法:

import hashlib
print(hashlib.algorithms_available)

2. 如何用hashlib生成哈希值?

使用 hashlib 生成哈希值的基本流程如下:

  1. 导入模块并选择算法
  2. 初始化哈希对象
  3. 更新数据(注意:必须是字节类型)
  4. 获取十六进制或二进制形式的摘要

以 SHA-256 为例:

import hashlib

data = "hello world".encode('utf-8')
sha256_hash = hashlib.sha256()
sha256_hash.update(data)
digest = sha256_hash.hexdigest()
print(digest)

几点注意事项:

ima.copilot
ima.copilot

腾讯大混元模型推出的智能工作台产品,提供知识库管理、AI问答、智能写作等功能

下载
  • 数据必须是字节类型(bytes),如果是字符串需要先编码
  • 可以多次调用 .update() 方法拼接数据,适合处理大文件
  • .hexdigest() 返回的是十六进制字符串,方便展示;.digest() 返回原始字节

3. 加盐哈希与密码存储安全

虽然哈希本身是不可逆的,但直接对密码进行哈希仍然存在风险,因为攻击者可以通过彩虹表反推常见密码。为增强安全性,通常会加入“盐”(salt)——一段随机生成的数据。

一个简单的加盐示例:

import hashlib
import os

password = "mysecretpassword"
salt = os.urandom(16)  # 生成16字节的随机盐值
hashed = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)
print(hashed.hex())

说明:

  • 使用了 pbkdf2_hmac 方法,这是专门用于密码哈希的函数
  • 参数 'sha256' 表示使用的哈希算法
  • 第三个参数是盐值,每次注册时应随机生成
  • 第四个参数是迭代次数,越大越安全,但也更耗时

这种方式比直接使用 .sha256() 更适合密码存储。


4. 常见误区和注意事项

在实际使用 hashlib 时,有些细节容易被忽略:

  • 不要用MD5或SHA-1做密码哈希:它们计算速度快,容易被暴力破解。
  • 确保输入数据是字节类型:字符串要先 .encode(),否则会报错。
  • 更新数据可以分段进行:比如读取大文件时可以按块更新。
  • 不同平台支持的算法可能不同:某些算法(如 SHA-3)依赖底层 OpenSSL 版本。

如果你不确定该选哪种算法,记住一句话:密码相关就用 pbkdf2_hmac、bcrypt 或 scrypt,通用哈希推荐 SHA-256。


基本上就这些。掌握这几个常用算法和使用技巧,就能满足大多数哈希需求了。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

715

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1235

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

575

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

697

2023.08.11

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
TypeScript 教程
TypeScript 教程

共19课时 | 1.9万人学习

C++教程
C++教程

共115课时 | 10.5万人学习

手把手实现数据传输编码
手把手实现数据传输编码

共1课时 | 706人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号