| 关键词: nbsp print hashlib 字符串 update hexdigest 哈希 hash 摘要 对象 |
涉及加密服务: 14. Cryptographic Services 其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1、SHA224、SHA256、SHA384、SHA512、MD5等。 import hashlib m = hashlib.md5() #创建hash对象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一个128位的密文 print m # 使用new()创建指定加密模式的hash对象 new(name, string='') """ Return a new hashing object using the named algorithm; optionally initialized with a string. """ h = hashlib.new('md5') print h # 三、常用属性
print hashlib.algorithms
#
('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') 列出所有加密算法 四、常用方法 hash.update(arg)更新哈希对象以字符串参数,如果同一个hash对象重复调用该方法,则 m.update(a); m.update(b) is equivalent to m.update(a+b) . hash.digest()返回摘要,作为二进制数据字符串值, hash.hexdigest()返回摘要,作为十六进制数据字符串值, hash.copy() 复制 最近在测试文件拷贝测试,需要对文件拷贝后进行MD5值比较,看是不是拷贝完全。google和baidu上都是使用md5模块读取所有的文件进内存,在计算md5,导致计算超过1G大小的文件报错。timespace兄给出了增量计算MD5的方法,记录一下: #!/usr/bin/env python import hashlib import sys def main(): if len(sys.argv) != 2: sys.exit('Usage: %s file' % sys.argv[0]) filename = sys.argv[1] m = hashlib.md5() with open(filename, 'rb') as fp: while True: blk = fp.read(4096) # 4KB per block if not blk: break m.update(blk) print m.hexdigest(), filename if __name__ == '__main__': main() |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|