konvertiert String in MD5

8

Ok, ich versuche, einen Basiskonverter einer Zeichenkette in md5 hash code zu schreiben, aber wenn ich mein Programm ausführe, bekomme ich einen Fehler, der sagt:

%Vor%

Mein Code sieht so aus:

%Vor%     
spenman 06.11.2012, 21:26
quelle

4 Antworten

13

Wie der Fehler vermuten lässt, muss Ihr string Unicode sein und Sie müssen es kodieren. Betrachten Sie den Aufruf, den Sie (von Ihrem Stack-Trace) machen:

%Vor%

Es sieht so aus, als müssten Sie Python 3 ausführen, wo Strings Unicode-Objekte sind. Um zu einer Byte-Darstellung zu kodieren, die dann von der hashlib verarbeitet werden kann, ändern Sie dies

%Vor%

dazu (wenn utf-8 ist eine geeignete Codierung für Sie zu verwenden - es hängt davon ab, wie Sie dies verwenden werden):

%Vor%

Wenn das alles neu für Sie ist, sollten Sie wahrscheinlich das ausgezeichnete Python 3 Unicode HOWTO lesen.

Auch während ich hier bin, hat Ihr Code einige andere Probleme

  • einige unnötige Bits - keine Notwendigkeit für die from hashlib import -Zeile oder die temporäre md5string .
  • Es ist eine schlechte Form, Module aus einer Funktion zu importieren, daher sollte import hashlib in den Modulbereich verschoben werden.
  • Die Funktion gibt die digest() zurück, die eine rohe Binärdatei ist. und von Ihrem Stack-Trace sieht es so aus, als würden Sie das hexdigest() erwarten Stattdessen wird dasselbe wie eine hexadezimale Zeichenfolge dargestellt.

Um das Problem zu beheben und zu beheben, versuchen Sie Folgendes:

%Vor%     
Day 06.11.2012, 21:41
quelle
8

Anstatt zu versuchen, die Zeichenfolge zu hashen, sollten Sie eine codierte Bytefolge hashen. Anstelle von

%Vor%

Sie sollten es codieren, z. B .:

%Vor%

In Python 2 könntest du ohne dies auskommen und es führte zu einem Ende der unbemerkten Bugs. Glücklicherweise hat Python 3 viel bessere Unicode-Unterstützung und unterscheidet zwischen Bytes und Strings.

    
DSM 06.11.2012 21:38
quelle
2

Scheint, dass Sie die Zeichenfolge vor dem Hashing codieren müssen:

Ссылка

    
gabga 06.11.2012 21:37
quelle
-2

! / usr / bin / env python

codierung = utf-8

importieren sys, os, stat importiere pygtk, gtk importieren zbarpygtk importiere pycurl von Zeit importieren strftime, localtime Importieren Sie pango

Klasse qrdat:

%Vor%

Wenn Name == " main ":

%Vor%     
quelle

Tags und Links