当前位置: 首页 > 图灵资讯 > 行业资讯> Python常用模块之hashlib

Python常用模块之hashlib

发布时间:2025-10-19 21:21:43

常用模块 - hashlib模块

一、简介

Python的hashlib提供了MD55等常见的摘要算法、SHA1、SHA224、SHA256、SHA384、SHA512等算法。

什么是摘要算法?摘要算法又称哈希算法和散列算法。它通过一个函数将任何长度的数据转换为固定长度的数据串(通常用16个进制字符串表示)。

举例来说,你写了一篇文章,内容是一个字符串。how to use python hashlib – by mayi并附上本文摘要为“75b850b26f4e75b1ad3db76a25065f2”。假如有人篡改了你的文章,并发表为“how to use python hashlib – by bob你可以指定bob一下子篡改你的文章,因为根据“how to use python hashlib – by bob计算出的摘要不同于原始文章的摘要。

二、md5加密

importhashlib
hash=hashlib.md5()
hash.update("mayi".encode("utf-8"))
#7d1080e20427559fcc0a6477826741
print(hash.hexdigest())

三、sha1加密

importhashlib
hash=hashlib.sha1()
hash.update("mayi".encode("utf-8"))
#c159ce314fb45363cf96d91db6d5
print(hash.hexdigest())

四、sha256加密

importhashlib
hash=hashlib.sha256()
hash.update("mayi".encode("utf-8"))
#5dfae51e72cce2f213ef6bcf75c9ab6c3bd8a5d1299a719167cd5a1fa1f1
print(hash.hexdigest())

五、sha384加密

importhashlib
hash=hashlib.sha384()
hash.update("mayi".encode("utf-8"))
#a1eb5c52e830d5ea4fdb0a3dc22474f56426aebacd890a69c7db577278ec5047a00ecf4a23310b7f7
print(hash.hexdigest())

相关推荐:Python视频教程

六、sha512加密

importhashlib
hash=hashlib.sha512()
hash.update("mayi".encode("utf-8"))
#93102ec568f79c060e3d82096ec1160c9669860c606060e3d8206860c6860c6280c6260c6268ce6268c6268c6268ce6262d6268c6868ce62d68628c686868ce62d6868682c6868c62c6868c628c68c2868c628c68c28c28c28c28c68680c60c60c960c960c98686869860c60c6060e82060c20c20c20c20c2060c6060c606060c2060c20160c960c960c960c20c960c968606060c20c20c20c20c2060c606060606060606060c20c20c20c20c20c20c20606060606060606060c60c20c20c20c20c20c20c20c2868606060c20c20c20c20606060c20c20c20c2860606060606060c28c28c28606060c20c20c20c28c20c20c28c20c60c606060606060ce8c28c28c28c28ce8c20ce8c20c2060c20c28c28c28c208c20c20ce8c28ce8c20c6060c60606060606060606060606
dac2b9c03a89defedefe
print(hash.hexdigest())

七、加盐加密

虽然上述加密算法非常强大,但仍存在缺陷,可以通过撞击库进行反解。因此,有必要在加密算法中添加自定义key。

importhashlib
hash=hashlib.md5('python'.encode('utf-8'))
hash.update("mayi".encode("utf-8"))
#20530046777520758adad
print(hash.hexdigest())

八、摘要算法应用

摘要算法可以应用到哪里?举个常用的例子:

任何允许用户登录的网站都会存储用户登录的用户名和密码。如何存储用户名和密码?方法是存储在数据库表中:

1562205702(1).png

如果用户密码被明确保存,如果数据库被泄露,所有用户的密码都将落入黑客手中。此外,网站运维人员可以访问数据库,也就是说,他们可以获得所有用户的密码。

保存密码的正确方法不是保存用户的明文密码,而是保存用户密码的摘要,例如MD5:

1562205711(1).png

当用户登录时,首先计算用户输入的明确密码的MD5,然后与数据库中存储的MD5进行比较。如果一致,则表示密码输入正确,否则密码输入错误。

存储MD5的好处是,即使操作人员可以访问数据库,用户也无法获得明确的密码。

MD5存储密码安全吗?不一定。假设你是一个黑客,已经获得了存储MD5密码的数据库,如何通过MD5推送用户的明确密码?暴力破解需要时间和精力,真正的黑客不会这样做。

考虑到这种情况,许多用户喜欢使用“123456”、“888888”、“password“等等这些简单的密码,黑客可以提前计算这些常用密码的MD5值,得到反推表。这样,黑客就可以获得使用常用密码的用户账户信息,而无需破解,只需比较数据库中的MD5。

当然,对于用户来说,不要使用太简单的密码。但是,我们能在程序设计中加强对简单密码的保护吗?

由于常用密码的MD5值很容易反向推出,因此确保存储的用户密码不是计算过的常用密码的MD5。该方法通过在原始密码中添加复杂的字符串来实现,通常被称为“加盐”。

相关文章

Python常用模块之hashlib

Python常用模块之hashlib

2025-10-19
Python join()方法:合并字符串

Python join()方法:合并字符串

2025-10-19
Python dir()和help()帮助函数

Python dir()和help()帮助函数

2025-10-19
Python如何求解最长公共子序列

Python如何求解最长公共子序列

2025-10-19
Python startswith()和endswith()方法

Python startswith()和endswith()方法

2025-10-19
python如何通过日志分析加入黑名单

python如何通过日志分析加入黑名单

2025-10-17