python对string和文件hash

 1 import subprocess, hashlib
 2    
 3 def fileSha1(filepath):
 4    with open(filepath,'rb') as f:
 5       sha1obj = hashlib.sha1()
 6       sha1obj.update(f.read())
 7       hash = sha1obj.hexdigest()
 8       return hash
 9    
10 def strSha1(strval):
11    sha = hashlib.sha1(strval.encode(encoding='utf-8'))
12    hash = sha.hexdigest()
13    return hash

使用Python进行文件Hash计算有两点必须要注意:

1、文件打开方式一定要是二进制方式,即打开文件时使用b模式,否则Hash计算是基于文本的那将得到错误的文件Hash。

2、对于MD5如果需要16位(bytes)的值那么调用对象的digest()而hexdigest()默认是32位(bytes),同理Sha1的digest()和hexdigest()分别产生20位(bytes)和40位(bytes)的hash值

posted @ 2014-04-22 15:54  sheeta  阅读(246)  评论(0)    收藏  举报