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
广告