I want to compare hashes of two files. But no matter if files are different or not, even with different hashes comparison results True
Here is the code:
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))
The output:
614c9853a7f62c5b60d7d15bde80708f
76dc116b2c1b19b265db5e657846e649
True
Process finished with exit code 0
We call the same function for both the files and store their hashes in two separate variables. After which we use the hashes to compare them. If both the hashes are same (meaning the files contain same data), we output the message Both files are same and then the hash.
To compare hash values for two different files, store internal items containing the hash values in the history database. Then, define a comparison rule to verify that the values are equal. To compare files across platforms, use ACR/Connector to retrieve the hash value from the history database on the other platform.
Generally, two files can have the same md5 hash only if their contents are exactly the same. Even a single bit of variation will generate a completely different hash value.
As a general rule Python methods follow the principle of command-query separation -- so that methods that modify the object (i.e. commands) return None
. This includes,
for example, list.sort
, and dict.update
. It is also true of the hasher1.update
method. So
a = hasher1.update(buf1)
assigns None
to a
. Instead, use
hasher1.update(buf1)
a = hasher1.hexdigest()
and similarly for 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])
This worked for me :
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With