Seite 1 von 1

sha1 wird nicht korrekt berrechnet

Verfasst: Dienstag 3. August 2010, 16:59
von 3quin0x
Hi @all,

Wo liegt der Fehler?
Ich wollte ein Konsolenprogramm schreiben, welches den Dateinamen übergeben bekommt und daraufhin, md5, sha1 usw. berrechnet. Jedoch berrechnet er nicht den korrekten Wert. Ich poste einfach mal den Code. Was habe ich falsch verstanden?

Code: Alles auswählen

import sys
import hashlib


datei = open(sys.argv[1],"r")

stdin = raw_input("Bitte geben Sie md5, sha1, sha256 oder sha512 an >>> ")

if stdin=='md5':
        for dat in datei.read():
                pass
        print hashlib.md5(dat).hexdigest()
elif stdin=='sha1':
        for dat in datei.read():
                pass
        print hashlib.sha1(dat).hexdigest()
elif stdin=='sha256':
        for dat in datei.read():
                pass
        print hashlib.sha256(dat).hexdigest()
elif stdin=='sha512':
        for dat in datei.read():
                pass
        print hashlib.sha512(dat).hexdigest()
else:
    print "Bitte nur md5, sha1, sha256, sha512 angeben!!!"
    
datei.close()

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Dienstag 3. August 2010, 17:08
von Darii
Erstens öffnest du die Dateien nicht im Binärmodus (geht mit "rb" statt "r") dann können komische Sachen mit den Zeilenumbrüchen passieren und zweitens berechnest du immer nur den Hashwert des letzten Buchstaben, lass die for-Schleife weg.

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Dienstag 3. August 2010, 17:28
von 3quin0x
@Darii ey cool dank dir! Funktioniert jetzt tadellos!!!

Gruß

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Dienstag 3. August 2010, 17:29
von BlackJack
@3quin0x: Das ginge wesentlich kürzer mit `hashlib.new()`.

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Mittwoch 4. August 2010, 09:47
von 3quin0x
@Black Jack ..danke ,jetzt ist das Prog nur noch 4 Zeilen lang

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Mittwoch 4. August 2010, 09:53
von Barabbas
Vielleicht könntest du dir auch mal die update() Funktion ansehen: Momentan beförderst du ja den gesamten Dateiinhalt in den Speicher - das wird bei (sehr) großen Dateien zu Problemen führen.

Einen schönen Gruß,

brb

P.S.
Rein unix-philosophie-mäßig fände ich es auch netter, wenn man die zu verwendete Methode über einen Parameter bestimmen könnte. Lässt sich viel besser skripten ;)

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Mittwoch 4. August 2010, 09:55
von Hyperion
Barabbas hat geschrieben: P.S.
Rein unix-philosophie-mäßig fände ich es auch netter, wenn man die zu verwendete Methode über einen Parameter bestimmen könnte. Lässt sich viel besser skripten ;)
Und wenn man schon dabei ist, schadet das argparse bzw. optparse-Modul nicht :-)

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Mittwoch 4. August 2010, 15:41
von Dav1d
Hyperion hat geschrieben:Und wenn man schon dabei ist, schadet das argparse bzw. optparse-Modul nicht :-)
http://docs.python.org/library/optparse.html hat geschrieben:Deprecated since version 2.7: The optparse module is deprecated and will not be developed further; development will continue with the argparse module.

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Mittwoch 4. August 2010, 15:47
von Hyperion
Dav1d hat geschrieben:
Hyperion hat geschrieben:Und wenn man schon dabei ist, schadet das argparse bzw. optparse-Modul nicht :-)
http://docs.python.org/library/optparse.html hat geschrieben:Deprecated since version 2.7: The optparse module is deprecated and will not be developed further; development will continue with the argparse module.
Das ist mir klar! Aber ich weiß ja nicht, welche Version der OP benutzt. 2.7 ist ja relativ neu... (daher habe ich optparse ja auch mit bzw. nachgestellt!)

Re: sha1 wird nicht korrekt berrechnet

Verfasst: Mittwoch 4. August 2010, 18:06
von Dav1d
Ich wollt's nur mal erwähnt haben, so als Zusatzinformation