python模块学习hashlib

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

一、hashlib概述

涉及加密服务:14. Cryptographic Services

其中 hashlib是涉及安全散列和消息摘要,提供多个不同的加密算法借口,如SHA1、SHA224、SHA256、SHA384、SHA512、md5等。

importhashlib

m= hashlib.md5()#创建hash对象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一个128位的密文PRintm#<md5 HASH object @ 000000000254ADF0>m.update('BeginMan')#更新哈希对象以字符串参数printm.digest()#返回摘要,作为二进制数据字符串值printm.hexdigest()#返回十六进制数字字符串 0b28251e684dfbd9102f8b6f0281c0c5printm.digest_size#16printm.block_size#64

使用new()创建指定加密模式的hash对象

new(name, string='')"""Return a new hashing object using the named algorithm;

optionally initialized with a string."""

h = hashlib.new('md5')printh#<md5 HASH object @ 000000000260BDB0>h2 = hashlib.new('ripemd160','what')printh2#<ripemd160 HASH object @ 000000000271B9F0>h.update('beginman')printh.hexdigest()#666fc5baa93a7fb207c5bfff03b67732#等效s =hashlib.md5()

s.update('beginman')prints.hexdigest()#666fc5baa93a7fb207c5bfff03b67732printh2.hexdigest()#9c1185a5c5e9fc54612808977ee8f548b2258d31

三、常用属性

print hashlib.algorithms #('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') 列出所有加密算法

print h.digest_size #16 产生的散列的字节大小。

print h.block_size #64 The internal block size of the hash algorithm in bytes.

四、常用方法

hash.update(arg)

更新哈希对象以字符串参数,如果同一个hash对象重复调用该方法,则m.update(a);m.update(b)is equivalent tom.update(a+b).

hash.digest()

返回摘要,作为二进制数据字符串值,

hash.hexdigest()

返回摘要,作为十六进制数据字符串值,

hash.copy()

复制

最近在测试文件拷贝测试,需要对文件拷贝后进行MD5值比较,看是不是拷贝完全。google和baidu上都是使用md5模块读取所有的文件进内存,在计算md5,导致计算超过1G大小的文件报错。timespace兄给出了增量计算MD5的方法,记录一下:

#!/usr/bin/env pythonimporthashlibimportsysdefmain():iflen(sys.argv) != 2:

sys.exit('Usage: %s file'%sys.argv[0])

filename= sys.argv[1]

m=hashlib.md5()

with open(filename,'rb') as fp:whileTrue:

blk= fp.read(4096)#4KB per blockifnotblk:

breakm.update(blk)printm.hexdigest(), filenameif__name__=='__main__':

main()

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航