使用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()

此方法用于返回通过更新方法传递的摘要数据。字节对象的大小与digest_size相同。它可能包含整个0到255之间的字节。

方法hashlib.hexdigest()

此方法与摘要方法相同,但结果将仅包含十六进制值。此方法用于非常容易地通过Internet发送数据。

范例程式码

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