Python中的MD5哈希

2025年1月5日 | 阅读 3 分钟

引言

在本教程中,我们将学习 Python 中的 MD5 哈希。加密哈希在日常生活中被广泛使用,例如数字签名、数学证明、控制代码、指纹、校验和(完整性检查)、消息哈希、存储密码等。它还用于通过 Internet 发送消息或为了安全起见将消息存储在数据库中。Python 的“hashlib”库中定义了许多哈希函数。本教程解释了 MD5 哈希的定义方式以及它们的工作原理。

什么是哈希?

哈希函数接受可变长度的字节数组作为输入,并将其转换为固定长度的序列。但是,很难恢复原始数据(输入字节)。例如,如果 a 是你的输入数据,h 是一个哈希函数,那么计算 h(a) 是快速而简单的,但试图再次检索它是一项非常耗时的任务。哈希函数的返回值称为哈希值或哈希值。

什么是 MD5 哈希?

此哈希函数接受一个字节数组序列并返回一个 128 位哈希值。相关函数是

  1. encode(): 它使用哈希函数将字符串转换为字节。
  2. digest(): 它以字节格式返回编码后的数据。
  3. hexdigest(): 它以十六进制格式返回编码后的数据。

md5 库是一个 Python 库。它提供了一个生成 MD5 哈希的简单接口。该库已被 Python 的 hashlib 库取代,后者可以提供更灵活、更安全的哈希生成接口。大多数算法都实现在 hashlib 模块中,但如果安装了 OpenSSL,hashlib 也可以用来管理算法。首先,你需要导入 hashlib 模块来使用哈希算法。导入命令如下 -

现在检查 hashlib 模块中是否存在所需的算法,或者是否所有算法都存在 -

运行上述代码后,我们发现以下输出 -

{'whirlpool', 'sha384', 'sha3_384', 'md5', 'shake_256', 'md5-sha1', 'blake2b', 'ripemd160', 'sha3_224', 'md4', 'blake2s', 'mdc2', 'sha224', 'sha1', 'sha3_256', 'sha512_224', 'sha3_512', 'sha512', 'sm3', 'shake_128', 'sha256', 'sha512_256'}

上面列出的 Hashlib 模块中可用的算法包括 OpenSSL 中的算法。但是要检查始终可用的算法列表,我们可以通过 algorithm_guaranteed 进行检查。

运行上述代码后,我们发现以下输出 -

{'blake2b', 'shake_128', 'sha224', 'sha384', 'sha256', 'sha3_384', 'sha1', 'sha3_256', 'sha3_224', 'sha3_512', 'sha512', 'md5', 'shake_256', 'blake2s'}

程序代码

在这里,我们提供了一个 Python MD5 哈希的程序代码。代码如下 -

输出

上面的代码使用字节,并且可以被哈希函数接受。md5 哈希函数对其进行编码,然后使用 digest() 打印等效的编码字节字符串。现在,我们编译上面的代码,找到给定哈希值的等效字节值。因此,找到的输出如下 -

The equivalent byte value of the given hash is: b'g\x13\x8b\xbf\x1fy\xf4\xaa\x8e\x00|_o{\x1d\xea'

程序代码

在这里,我们提供了一个 Python MD5 哈希的程序代码,用于查找给定哈希值的等效十六进制值。代码如下 -

输出

上面的代码使用 encode() 函数将字符串转换为等效的字节,以便哈希函数可以接受它。md5 哈希函数对其进行编码,然后 hexdigest() 函数打印等效于哈希值的十六进制值。现在,我们编译上面的代码,找到给定哈希值的等效十六进制值。因此,找到的输出如下 -

The equivalent hexadecimal value of the given hash is: 67138bbf1f79f4aa8e007c5f6f7b1dea