2016-04-08 8 views
0

Also ich SHA-256 für ein bestimmtes Problem verwenden möchte: Digest aus einem Bytearray berechnen, dann den resultierenden Digest mit einem anderen Block von Bytes verketten (ein 1024 Byte-Block für dieses Problem) und berechne den Digest für die verketteten Werte.Mit Bytes in Python mit SHA-256 arbeiten

Zum Beispiel:

Hier sind meine zwei Byte-Blöcke:

from hashlib import sha256 
rawhex4 = b'\x44'*773 
rawhex3 = b'\x33'*1024 

h = sha256() 
h.update(rawhex4) 
aux = h.digest() 

Diese hexdigest ist: d8f8a9eadd284c4dbd94af448fefb24940251e75ca2943df31f7cfbb6a4f97ed

dann will ich diese 32-Byte-verketten zu meinem nächsten Block verdauen und es Hash aber ich bekomme nicht die richtige Antwort. Ich folgendes tun:

h.update(rawhex3 + aux) 

Ich weiß, dass Hashing rawhex3 + Hash (rawhex4) gibt mir diese verdauen:

26949e3320c315f179e2dfc95a4158dcf9a9f6ebf3dfc69252cd83ad274eeafa

Was könnte ich fehlen? Ich bin ziemlich neu in Python

Antwort

1

Sie verwenden das Hash-Objekt wieder, das bereits Bits von rawhex4 enthält. Wenn Sie eine neue erstellen, erhalten Sie Ihr 26..fa Ergebnis.

+0

Gute Erklärung. Stehlen Sie meinen Code für ein Beispiel, wenn Sie das Bedürfnis haben; Ich lösche meine Antwort in Kürze. –

+0

Wow, ich dachte mit h.update() die Hash-Funktion wurde gelöscht, so dachte ich, mein Problem war in Bytes verketten ... konnte die einfache Lösung nicht sehen ... Danke !! –

0

Versuchen Sie folgendes:

from hashlib import sha256 
rawhex4 = b'\x44'*773 
rawhex3 = b'\x33'*1024 

h1 = sha256() 
h1.update(rawhex4) 
aux = h1.digest() 

h2 = sha256() 
h2.update(rawhex3 + aux) 
print h2.hexdigest()