Je parcourt un dossier contenant des fichiers binaires et j'essaie de calculer les valeurs de hachage de chaque fichier, en particulier sha1 et sha256. Sur mes runs, j'ai étrangement les mêmes valeurs sha256 pour tous les fichiers, mais les valeurs sha1 sont différentes (donc correctes). Ci-dessous est une capture d'écran d'un fichier de sortie qui montre que le hachage sha1 a été fait correctement. Mais sha256 ne l'est pas. (noms de fichiers Désolé de chaque fichier binaire est aussi son SHA1)SHA1 différent mais identique SHA256
Y at-il quelque chose de mal avec mon processus? C'est le code approprié dans Python. JE NE VOIS PAS QUELQUE CHOSE. Pardon.
out.write("FILENAME,SHA1,SHA256\n")
for root, dirs, files in os.walk(input_path):
for ffile in files:
myfile = os.path.join(root, ffile)
nice = os.path.join(os.getcwd(), myfile)
fo = open(nice, "rb")
a = hashlib.sha1(fo.read())
b = hashlib.sha256(fo.read())
paylname = os.path.basename(myfile)
mysha1 = str(a.hexdigest())
mysha256 = str(b.hexdigest())
fo.close()
out.write("{0},{1},{2}\n".format(paylname, mysha1, mysha256))
Que pensez-vous que fo.read() 'va lire quand il aura déjà lu le contenu du fichier? – deceze
lorsque vous faites 'fo.read()' pour le hachage sha1, vous avez lu le fichier entier, mais vous ne déplacez jamais le curseur au début du fichier. donc l'entrée du hachage sha256 est toujours la même (rien) –
'hashlib.sha256 (b ''). hexdigest() == 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'' –