Python的 hashlib 提供了常见的摘要算法,如 MD5,SHA1 等等。
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
MD5
MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。
运行示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python基础 常用内建模块 - hashlib
# 摘要算法 MD5
import hashlib
def runTest():
md5 = hashlib.md5()
md5.update(("password key is 123456").encode("utf-8"))
result = md5.hexdigest()
# 71c3170d598b69048870420e2e65a06f
print(result)
runTest()
运行结果
D:\PythonProject\sustudy>python main.py
71c3170d598b69048870420e2e65a06f
SHA1
SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。
比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法不仅越慢,而且摘要长度更长。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python基础 常用内建模块 - hashlib
# 摘要算法 SHA1
import hashlib
def runTest():
sha1 = hashlib.sha1()
sha1.update(("password key is 123456").encode("utf-8"))
result = sha1.hexdigest()
# 67958bd9d6b835a4421133ff0cec3bd047da4ca8
print(result)
runTest()
运行示例
D:\PythonProject\sustudy>python main.py
67958bd9d6b835a4421133ff0cec3bd047da4ca8
- 摘要算法在很多地方都有广泛的应用。要注意摘要算法不是加密算法,不能用于加密(因为无法通过摘要反推明文),只能用于防篡改,但是它的单向计算特性决定了可以在不存储明文口令的情况下验证用户口令。