2016-04-26 101 views
0

2つのファイルのハッシュを比較したいと思います。Pythonで2つのファイルのmd5ハッシュを比較する

import hashlib 

hasher1 = hashlib.md5() 
afile1 = open('canvas.png', 'rb') 
buf1 = afile1.read() 
a = hasher1.update(buf1) 
print(str(hasher1.hexdigest())) 

hasher2 = hashlib.md5() 
afile2 = open('img5.png', 'rb') 
buf2 = afile2.read() 
b = hasher2.update(buf2) 
print(str(hasher2.hexdigest())) 

print(str(a) == str(b)) 

出力:

614c9853a7f62c5b60d7d15bde80708f 
76dc116b2c1b19b265db5e657846e649 
True 

Process finished with exit code 0 

答えて

2

一般的なルールはPythonとしてではなくファイルでも異なるハッシュ比較して、異なるされているかどうかに関係なく、ここでは真の

がコードである結果メソッドはcommand-query separationの原則に従い、オブジェクト(すなわちコマンド)を変更するメソッドがNoneを返すようにします。これには、例えば 、list.sort、およびdict.updateが含まれます。また、hasher1.updateメソッドの場合も同様です。だから、

a = hasher1.update(buf1) 

aからNoneを割り当てます。代わりに

hasher1.update(buf1) 
a = hasher1.hexdigest() 

と同様にbを使用してください。


import hashlib 

digests = [] 
for filename in ['canvas.png', 'img5.png']: 
    hasher = hashlib.md5() 
    with open(filename, 'rb') as f: 
     buf = f.read() 
     hasher.update(buf) 
     a = hasher.hexdigest() 
     digests.append(a) 
     print(a) 

print(digests[0] == digests[1]) 
+0

ああ、本当に愚かな間違いを。ありがとう – VAGrus

0

これが私の仕事:

import hashlib 
#File 1 
hasher1 = hashlib.md5() 
afile1 = open('C:/.../elephant_rgb.png', 'rb') 
buf1 = afile1.read() 
a = hasher1.update(buf1) 
md5_a=(str(hasher1.hexdigest())) 
#File 2 
hasher2 = hashlib.md5() 
afile2 = open('C:/.../innDay-Pic2.png', 'rb') 
buf2 = afile2.read() 
b = hasher2.update(buf2) 
md5_b=(str(hasher2.hexdigest())) 
#Compare md5 
if(md5_a==md5_b): 
    print("Yes") 
else: 
    print("No") 

##No 
関連する問題