Python hashlib模块详解:7种核心加密算法实战指南

Aria
Aria
发布时间:2026-10-14| 5人浏览过
原创

本文深入解析Python内置的hashlib模块,详细演示MD5、SHA1、SHA224、SHA256、SHA384及SHA512等7种主流哈希算法的实现方式。文章涵盖获取可用算法集合的方法,对比不同算法的输出长度与特性,并介绍通过添加自定义Key提升安全性的进阶技巧,帮助开发者掌握Python环境下的数据完整性校验与基础加密实践。

前言

在软件开发中,加密算法的应用十分广泛,例如常见的MD5和SHA1等。本文将重点介绍Python中用于字符加密的核心模块——hashlib。需要注意的是,hashlib处理的数据类型必须为二进制编码,若直接传入字符串会引发错误,因此在使用前需进行适当的编码转换。


import hashlib 
string='任性的90后boy' 
#使用encode进行转换 
sha1 = hashlib.sha1() 
sha1.update(string.encode('utf-8')) 
res = sha1.hexdigest() 
print("sha1采用encode转换加密结果:",res) 
#使用byte转换为二进制 
sha1 = hashlib.sha1() 
sha1.update(bytes(string,encoding='utf-8')) 
res = sha1.hexdigest() 
print("sha1采用byte转换的结果:",res)

我们可以通过以下两种方法中的任意一种,来获取hashlib模块中支持的所有散列算法集合:


import hashlib 
a=hashlib.algorithms_available  
b=hashlib.algorithms_guaranteed 
print(a) 
print(b)

接下来,我们将挑选几种常用的算法进行详细讲解。

一、MD5

MD5全称为Message-Digest Algorithm 5(信息-摘要算法5),主要用于确保信息传输的完整性和一致性。作为一种被计算机领域广泛使用的杂凑算法(亦称摘要算法或哈希算法),它已成为主流编程语言的标准功能之一。其基本原理是将任意长度的数据运算转换为固定长度的值,MD5的前身包括MD2、MD3和MD4。

MD5算法具备以下显著特点:

1、压缩性:无论输入数据的长度如何,生成的MD5值长度始终固定。

2、易计算性:从原始数据计算出MD5值的过程非常简便快捷。

3、抗修改性:只要对原始数据做任何微小的改动(即使仅修改1个字节),生成的MD5值也会产生巨大差异。

4、强抗碰撞性:在已知原始数据和其MD5值的情况下,想要找到一个具有相同MD5值的伪造数据极其困难。

MD5的主要作用是在使用数字签名软件签署私人密钥前,将大容量信息“压缩”为一种保密格式,即将任意长度的字节串变换为固定长度的十六进制数字串。作为最常见的摘要算法,MD5运算速度较快,生成的结果是固定的128 bit字节,通常以32位的16进制字符串形式展示。


import hashlib 
string='任性的90后boy' 
md5 = hashlib.md5()  
md5.update(string.encode('utf-8'))#转码,update里的必须是字节型 
res = md5.hexdigest() #返回字符型摘要信息 
print(md5.digest())#返回字节型的摘要信息 
print("md5加密结果:",res)

二、sha1

SHA1(安全散列算法)生成的结果为160 bit字节,通常以40位的16进制字符串表示。


import hashlib 
string='任性的90后boy' 
sha1 = hashlib.sha1() 
sha1.update(string.encode('utf-8')) 
res = sha1.hexdigest() 
print("sha1加密结果:",res)

三、sha224

属于安全散列算法系列。


import hashlib 
string='任性的90后boy' 
sha224 = hashlib.sha224() 
sha224.update(string.encode('utf-8')) 
res = sha224.hexdigest() 
print("sha224加密结果:",res)

四、sha256

属于安全散列算法系列。


import hashlib 
string='任性的90后boy' 
sha256 = hashlib.sha256() 
sha256.update(string.encode('utf-8')) 
res = sha256.hexdigest() 
print("sha256加密结果:",res)

五、sha384

属于安全散列算法系列。


import hashlib 
string='任性的90后boy' 
sha384 = hashlib.sha384() 
sha384.update(string.encode('utf-8')) 
res = sha384.hexdigest() 
print("sha384加密结果:",res)

六、sha512

属于安全散列算法系列。


import hashlib 
string='任性的90后boy' 
sha512= hashlib.sha512() 
sha512.update(string.encode('utf-8')) 
res = sha512.hexdigest() 
print("sha512加密结果:",res)

七、高级加密

尽管上述加密算法依然具有相当的安全性,但它们仍存在一定缺陷,例如可能通过撞库攻击被反解。因此,建议在加密算法中引入自定义的key(密钥)进行二次加密,以提升安全性。


md5 = hashlib.md5() 
md5.update('md5'.encode('utf-8')) 
res = md5.hexdigest() 
print("普通加密:",res) 
md51 = hashlib.md5(b'md512') 
md51.update('md51'.encode('utf-8')) 
res = md51.hexdigest() 
print("采用key加密:",res)

总结

本文主要介绍了MD5、SHA1、SHA224、SHA256、SHA384、SHA512以及高级加密等几种常见算法,简要阐述了各算法的特点及基本使用方法。后续我们将继续分享更多精彩内容,敬请期待!

至此,关于Python加密解密模块hashlib的7种加密算法的介绍已告一段落。如需了解更多Python hashlib相关内容,欢迎查阅本站历史文章或继续阅读后续教程。感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。