Python 中的安全哈希和消息摘要


对于安全哈希和消息摘要过程,我们应该使用 hashlib 模块。该模块为不同的安全哈希算法(如 SHA1、SHA224、SHA256、SHA512 等)实现了通用接口。此外还有 RSA 的 MD5 算法。较旧的算法称为消息摘要,新方法称为安全哈希。

要使用此模块,我们需要在 Python 代码中导入 hashlib 模块。

import hashlib

在此方法中,存在一些预定义的算法,如 md5、sha1、sha224、sha256、sha512。我们可以从 OpenSSL 库中添加其他算法。

hashlib 模块的一些方法和常量如下:

常量 hashlib.algorithm_guranteed

它将返回哈希算法的名称,这些算法保证在所有不同平台上都受此模块支持。

常量 hashlib.algorithm_available

它将返回在运行的 Python 解释器中可用的哈希算法的名称。

常量 hashlib.digest_size

它将返回结果哈希的大小(以字节为单位)。

常量 hashlib.block_size

它将返回哈希算法的内部块大小(以字节为单位)。

方法 hashlib.new(name[, data])

这是一个构造函数。它以所需的算法名称作为其第一个参数。它可以使用预定义的哈希或 OpenSSL 库中的其他算法。

方法 hashlib.update(arg)

此方法用于使用给定参数更新哈希对象。此函数的重复调用等效于使用连接参数的单个调用。

方法 hashlib.digest()

此方法用于返回通过 update 方法传递的摘要数据。字节对象的大小与 digest_size 相同。它可能包含范围从 0 到 255 的所有字节。

方法 hashlib.hexdigest()

此方法与 digest 方法相同,但结果仅包含十六进制值。此方法用于非常轻松地通过互联网发送数据。

示例代码

实时演示

import hashlib
my_hash1 = hashlib.md5() #Choose md5 and update with a bytes
update_bytes = b'Python123'
my_hash1.update(update_bytes)
print("Result after digesting: " + str(my_hash1.hexdigest()))
print("Digest Size: " + str(my_hash1.digest_size))
my_hash2 = hashlib.sha256() #Choose SHA256 and update with same bytes
my_hash2.update(update_bytes)
print("Result after digesting: " + str(my_hash2.hexdigest()))
print("Digest Size: " + str(my_hash2.digest_size))

输出

Result after digesting: ae35eacb1cb6f6d38c29a04ecb2d7471
Digest Size: 16
Result after digesting: bba32ba33d6a7f3e02a96e2d7ee6860765780aee42b878007369e373ff419b1e
Digest Size: 32

更新于: 2019-07-30

1K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告