2016-08-27 2 views
-1

Zum ersten Mal mit sha256.sha256 Ergebnis nicht ändern

Mit diesem Code entspricht das Ergebnis immer zu 4aa6892909e369933b9f1babc10519121e2dfd1042551f6b9bdd4eae51f1f0c2

, was falsch ist?

def signning(self,D_path): 
    BUF_SIZE = 65536 
    hashed = hashlib.sha256() 

    with open(D_path, 'rb') as f: 
     while True: 
      data = f.read(BUF_SIZE) 
      if not data: 
       break 
      hashed.update(data) 

    hashed_D = hashed.hexdigest() 
    print hashed_D 
+0

Warum sollte es sich ändern? Gleiche Eingabe = gleiche Ausgabe, sonst wäre Ihre Hash-Funktion kaputt. – tkausl

+0

Was haben Sie stattdessen erwartet? Ist das mit * verschiedenen * Dateien oder der gleichen Datei jedes Mal? –

+0

Andere Datei mit unterschiedlichem Ergebnis @ Martijn Pieters – Rex

Antwort

0

Ja, es ist nichts falsch mit Ihrem Code, hier ist ein kleines Beispiel, dass hashlib.sha256 ist deterministisch zeigt:

import random 
import string 
import hashlib 

random.seed(1) 

for i in range(5): 
    data = ''.join(random.choice(string.ascii_uppercase + string.digits) 
        for _ in range(10)) 

    hashed = hashlib.sha256() 
    hashed.update(data) 
    print data, "->", hashed.hexdigest() 

Führen Sie dieses Skript über und über, und Sie werden das gleiche bekommen werden Ausgang cos der Eingang ist immer derselbe;)

+0

Thx für anwsering, scheint dies eine Dummy-Frage: D – Rex