Thread perl md5 subroutine (23 answers)
Opened by Gast at 2008-11-07 15:09

topeg
 2008-11-07 21:15
#116076 #116076
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Also zu Anfang, weißt du was eine MD5-Summe darstellt? Wenn ja diesen Abschnitt überspringen.

Eine MD5-Summe ist eine Zeichenkette, die einen String eindeutig identifiziert. Bei der Entwicklung war es das Ziel, dass an damit jeden beliebigen String, eindeutig einer MD5-Summe zuordnen zu können. (was auch funktioniert, nur bei sehr großen Strings ist die Zuordnung nicht mehr eindeutig)
Zudem ist die Methode nicht umkehrbar. Man kann aus einem String immer die gleiche MD5-Summe generieren, aber es ist unmöglich aus einer MD5-Summe den String zu erzeugen, mit dem die Summe Erzeugt wurde. Ein erwünschter Effekt bei dem Algorithmus ist, das schon eine minimale Änderung am UrsprungsString eine völlig andere MD5-Summe erzeugt.

Dein kleines Code Schnipplechen dokumentiert:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Laden des Moduls "Digest::MD5"
# bedenke, das das "::" eine Pfadangabe sein kann und im dem meisten fällen auch ist.
# das Modul befindet sich also ungefähr hier:
# /usr/lib/perl/5.10/Digest/MD5.pm
# alles vor "Digest" kann variieren, je nach Betriebssystem/Distribution oder Art der Installation.
# das ".pm" identifiziert es als PerlModul
use Digest::MD5;

# Zuweisung zweier Variablen
# denke dringend darüber nach die Module
# "strict" und "warnings"
# zu verwenden, da sie dir helfen Fehler in Scripten zu zu finden
# zwar zwingen sie dich ein "exakteres" Perl zu schreiben,
# dafür findest du Fehler, (z.B Schreibfehler) viel leichter
$pass= "geheimesPasswort";
$nick= "Ichbins";

# das Erzeugt ein Objekt, aus der Klasse "Digest::MD5",
# welches auch das  Modul ist.
# Dabei werden im Objekt einige Variablen erzeugt
# und auf einen definierten Wert gesetzt.
# unter anderem auch eine Variable,
# die den zu hashenden String aufnehmen wird.
$md5 = Digest::MD5->new;

# Das fügt der Variable im Objekt (die oben im Objekt als leerer String initialisiert wurde)
# den String "Ichbins\x000geheimesPasswort" hinzu
# das ist gleich bedeutend zu:
# $md5 -> add($nick);
# $md5 -> add("\0");
# $md5 -> add($pass);
# oder
# $md5 -> add("Ichbins");
# $md5 -> add("\0");
# $md5 -> add("geheimesPasswort");
# Das "\0" würde binär als "00000000" dargestellt
# Das "I" z.B. würde binär als "01001001" dargestellt
$md5 -> add("$nick\0$pass");

# die MD5-Summe erzeugen
# und als Hexadezimal Kodierter String in "$digest" schreiben
$digest = $md5->hexdigest;


Ich hoffe dir ist das jetzt etwas klarer, was da passiert.

View full thread perl md5 subroutine