2016-09-19 6 views
0

Ive versucht, die md5-Digest-Algorithmus in erlang zu schreiben und haben keine Ahnung, wie Sie diesen Schritt zu implementieren,Computing MD5-Hashes in erlang

1. creating 16 octet MD5 hash of X where X is a string. 

Kann jemand helfen?

Bedeutet dies folgt aus:

Create a 16 byte(32-hex digits) of base - 8(octet) which is md5 of X. ? 

Thank you!

+0

Die Antwort ist ja. Beachten Sie, dass eine Zeichenfolge auch eine Oktett-Zeichenfolge oder eine Bit-Zeichenfolge bedeuten kann (obwohl die meisten Bibliotheken nur Bytes verarbeiten, aber im Prinzip auch Bit-Zeichenfolgen möglich sind). –

Antwort

2

Mit crypto Modul und hash Funktion können Sie das MD5 berechnen, das ein 16-Byte-Digest-Algorithmus ist.

Krypto: hash (Typ, Daten) -> Digest

Type = md5 

Data = iodata() 

Digest = binary() 

Es wird ein md5 Atom als Typ und ein iodata() als Daten und gibt eine binary() als Digest. Folgende Codeausschnitt ist ein einfaches Beispiel:

crypto:hash(md5, "put-your-string-here"). 

prüfen crypto documentation für weitere Informationen.

Auch zum Konvertieren des zurückgegebenen binären Werts in hexadezimale Zeichenfolge gibt es keine Funktion in der Standardbibliothek, aber es ist so einfach wie einige Zeilen Code, die in this thread gut erklärt werden.

+0

Danke für die Antwort. Also weiß ich, dass es ein Binärformat zurückgibt, also habe ich eine Funktion erstellt, die die äquivalente String-Darstellung wie folgt liefert: md5: hexstring (crypto: hash (md5, "hallo")). "5d41402abc4b2a76b9719d911017c592" jedoch Ich bin nicht sicher, was 16 Oktett MD5-Hash X. Dank – sad

+0

@sad, folgt aussehen: http://rosettacode.org/wiki/MD5#Erlang –

+0

@Atomic_alarm Ich habe das. Da erlang binär zurückkehrt, sollten wir in Hex-String konvertieren. Das konnte ich mit dem Format io_lib: in hex konvertieren. aber meine Sorge ist das: erstellen 16 Oktett MD5 Hash von X, wobei X eine Zeichenfolge ist. Können Sie erklären, was das bedeutet? Danke – sad