2010-11-22 20 views
67

Wie kann ich eine Zeichenfolge mit MD5 in Rails 3.0 verschlüsseln? pass = MD5.hexdigest(pass) in einem Modell ergibt uninitialized constant MyModel::MD5RoR - MD5 Generation

+2

Sie könnten diesen Beitrag lesen, warum die Verwendung von MD5/SHA als Teil Ihres Authentifizierungsschemas eine schlechte Wahl ist: http://codahale.com/how-to-safely-store-a-password/ –

+0

A Punkt der Terminologie: Hashing, mit z der MD5-Algorithmus ist nicht * Verschlüsselung *. Sie verschlüsseln etwas, wenn Sie es auch * entschlüsseln * können möchten. Normalerweise können Sie die ursprüngliche Nachricht nicht aus einem Hashwert ermitteln, und oft ist dies genau der Punkt, an dem ein Hashalgorithmus verwendet wird. – Confusion

Antwort

153

Sie können hierfür Digest::MD5 aus der Ruby-Standardbibliothek verwenden.

irb(main):001:0> require 'digest/md5' 
=> true 
irb(main):002:0> Digest::MD5.hexdigest('foobar') 
=> "3858f62230ac3c915f300c664312c63f" 

Und noch etwas: MD5 ist ein Hash-Algorithmus. Sie verschlüsseln nichts mit einem Hashalgorithmus.

+2

'Digest :: MD5.hexdigest ('foobar')' bearbeitet –

+13

Eine weitere Sache: MD5 wurde grundsätzlich (im kryptographischen Sinne) gebrochen und sollte nicht mehr verwendet werden. Wenn Sie ein neues Software-Projekt starten, verwenden Sie einen stärkeren Hashalgorithmus wie SHA512 oder bcrypt und vergessen Sie nicht, Ihren Kennwörtern ein Salz hinzuzufügen, bevor Sie sie hashen. – joschi

+6

MD5 ist für kryptografische Zwecke unterbrochen, kann aber weiterhin zum Vergleichen von Dateien verwendet werden. Git benutzt es immer noch. ABER DON "T HASH PASSWORDS MIT MD5 – AlexQueue