Hash einer Datei in Python

micho2

Benutzer
Mitglied seit
18. Juli 2012
Beiträge
147
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

Ich schreibe gerade eine kleine App, in der ich für sehr viele Dateien auf der Disk Station einen "Fingerabdruck" erstellen möchte. Aktuell mache ich dies mit Md5 Hash.

Habt ihr eine Empfehlung für einen Algorithmus, der in Python3 auf der Diskstation zur Verfügung steht, mit dem das effizienter geht?

Auf dem Mac mache ich das mit blake2, der steht auf der Syno aber nicht zur Verfügung.

Hauptkriterium ist Performance, nicht unbedingt ein kryptografisch sicheres Signaturverfahren.
Es soll eine Indikation für eine Duplikatdatei generiert werden.

Danke, Micho
 

Synchrotron

Benutzer
Mitglied seit
13. Juli 2019
Beiträge
1.937
Punkte für Reaktionen
220
Punkte
89
Die DS hat einen bordeigenen Duplikatefinder an Bord. Du kannst dir die Arbeit machen, aber notwendig ist es nicht unbedingt.
 

luddi

Benutzer
Mitglied seit
05. September 2012
Beiträge
1.624
Punkte für Reaktionen
29
Punkte
74

micho2

Benutzer
Mitglied seit
18. Juli 2012
Beiträge
147
Punkte für Reaktionen
0
Punkte
0
Danke,
hast Du eine Empfehlung, was die Performanz (Speed) angeht?
 

luddi

Benutzer
Mitglied seit
05. September 2012
Beiträge
1.624
Punkte für Reaktionen
29
Punkte
74
Um so weniger aufwändig der Algorithmus, um so schneller auch zu berechnen in der Regel.
In der Dokumentation findet man folgenden Hinweis, dass der von dir auf dem Mac eingesetzte Algorithmus blake2 ab Python Version 3.6 in der Bibliothek vorhanden ist.

"New in version 3.6: blake2b() and blake2s() were added."

Da aber die aktuelle python3 Version auf der Syno eine v3.5 ist, so steht dir diese library nicht zur verfügung.
Also was die Performance angeht und du nur einen sogenannten Fingerabdruck erstellen möchtest um Duplikate ausfindig zu machen reicht aus meiner Sicht vollkommen MD5.

Um die Performance zu untersuchen könnte man das Skript auf eine bestimmte Anzahl von Dateien los lassen und die Laufzeit bestimmen.
Dieses wiederholt man für alle in Frage kommenden Algorithmen und kann somit den schnellsten Ablauf bestimmen.

--luddi
 

luddi

Benutzer
Mitglied seit
05. September 2012
Beiträge
1.624
Punkte für Reaktionen
29
Punkte
74
Hier mal ein paar Zahlen zum Vergleich der Laufzeiten der unterschiedlichen Algorithmen... Getestet wurde anhand einer per Random erstellten 10 GB Datei.
Die Zeit des Ergebnis jeweils in Sekunden dargestellt.

Rich (BBCode):
		1	2	3	4	5	Mittelwert

MD5		49,623	38,320	38,554	42,468	42,733	42,340
BLAKE2b		44,425	39,276	40,530	44,903	43,394	42,506
BLAKE2s		45,847	41,758	44,207	46,806	46,765	45,077
SHA-1		40,484	37,114	40,077	43,611	44,456	41,148
SHA-224		45,300	44,907	47,652	48,706	49,075	47,128
SHA-256		45,188	44,991	49,084	48,621	48,892	47,355
SHA-384		42,513	40,258	45,082	44,714	44,963	43,506
SHA-512		42,261	40,069	45,312	44,893	44,859	43,479

Der zweite Durchlauf war wohl für alle Algorithmen jeweils der schnellste. Der Gewinner wäre in meiner Messreihe der Algorithmus SHA-1.

--luddi
 
  AdBlocker gefunden!

Du bist nicht hier, um Support für Adblocker zu erhalten, denn dein Adblocker funktioniert bereits ;-)

Klar machen Adblocker einen guten Job, aber sie blockieren auch nützliche Funktionen.

Das Forum wird mit einem hohen technischen, zeitlichen und finanziellen Aufwand kostenfrei zur Verfügung gestellt. Wir zeigen keine offensive oder Themen fremde Werbung. Bitte unterstütze dieses Forum, in dem du deinen Adblocker für diese Seite deaktivierst.