pythonファイルパスからファイルhash値を取得
2759 ワード
1 import hashlib
2 import os,sys
3
4 def CalcSha1(filepath):
5 with open(filepath,'rb') as f:
6 sha1obj = hashlib.sha1()
7 sha1obj.update(f.read())
8 hash = sha1obj.hexdigest()
9 print(hash)
10 return hash
11
12 def CalcMD5(filepath):
13 with open(filepath,'rb') as f:
14 md5obj = hashlib.md5()
15 md5obj.update(f.read())
16 hash = md5obj.hexdigest()
17 print(hash)
18 return hash
19
20 if __name__ == "__main__":
21 if len(sys.argv)==2 :
22 hashfile = sys.argv[1]
23 if not os.path.exists(hashfile):
24 hashfile = os.path.join(os.path.dirname(__file__),hashfile)
25 if not os.path.exists(hashfile):
26 print("cannot found file")
27 else
28 CalcMD5(hashfile)
29 else:
30 CalcMD5(hashfile)
31 #raw_input("pause")
32 else:
33 print("no filename")
Pythonを使用したファイルHash計算には、次の2つの点に注意する必要があります.
1、ファイルの开き方は必ずバイナリ方式で、ファイルを开く时にbモードを使う.そうしないと、Hash计算はテキストベースで间违ったファイルHashが得られる.
2、MD 5に対して16ビット(bytes)の値が必要である場合、呼び出し対象のdigest()、hexdigest()のデフォルトは32ビット(bytes)、同理Sha 1のdigest()とhexdigest()はそれぞれ20ビット(bytes)と40ビット(bytes)のhash値を生成する