1. hashlib
模块实现了许多不同安全散列和消息摘要算法的通用接口。包括FIPS安全哈希算法SHA1,SHA224,SHA256,SHA384和SHA512以及RSA的MD5算法。
如果您需要adler32或crc32哈希函数,则它们在zlib模块中可用。
1. hashlib 的基本用法
散列算法,总是存在该模块中的构造是md5(),sha1(),sha224(),sha256(),sha384(),和sha512()。
>>> hash = hashlib.md5() # 创建个MD5对象
>>> hash.update(b'string') # 向对象中添加要进行哈希的字符串
>>> hash.digest() # 返回摘要
>>> hash.hexdigest() # 返回十六进制摘要
例如:用于md5()创建一个MD5哈希对象。现在可以使用该update()方法为任何字符串提供此对象。在任何时候,都可以使用digest()or hexdigest()方法向它提供输入到它的字符串的_摘要_。
>>> import hashlib
>>> md5_1 = hashlib.md5()
>>> md5_1.update(b"Never Giv") # 注意字符串要转换成字节类型
>>> md5_1.update(b"er up!")
>>> md5_1.digest()
b'\x17Z\xe7\xf1\xde\xbe5\xa4\x84\x8c\xbc\xbf\xb6Y>M'
>>> md5_1.hexdigest()
'175ae7f1debe35a4848cbcbfb6593e4d'
>>> # pytnic
>>> hashlib.md5(b"Nerver Giver up!").hexdigest()
'175ae7f1debe35a4848cbcbfb6593e4d'
hashlib中有以下方法:
>>> hashlib.algorithms_available # 返回模块支持的哈希算法的名字
>>> hash.digest_size # 返回散列的大小(以字节为单位)
>>> hash.block_size # 返回散列算法内部块的大小(以字节为单位)
1.2 Hash函数的应用
【应用】 :对文件进行哈希
import hashlib
import os
def hash(file_path):
h = hashlib.md5() # 创建MD5哈希对象
f = open(file_path,"rb")
size = os.path.getsize(file_path) # 获取文件大小
for i in range(size):
data = f.read(1) # 读取一个字节的数据
h.update(data)
f.close()
标签:hashlib,hash,函数,Python,update,算法,哈希,md5
From: https://www.cnblogs.com/ruyi13/p/16785407.html