Wie kann ich bcrypt in einer PHP-Anwendung anbieten (und sollte ich das tun)?

Ich trage zu einem relativ ausgereiften Open-Source-PHP-Projekt bei. Kürzlich habe ich festgestellt, dass Passwörter als reine MD5-Hashes gespeichert werden, was für mich sehr lästig ist. Ich dachte, wenn ich das Problem beheben würde, könnte ich es genauso gut richtig machen (tm), also wollte ich bcrypt verwenden.

Zunächst, was ich für andere Sprachen gefunden habe: bcrypt-ruby scheint entweder den ursprünglichen C-Code von OpenBSD oder @ zu verwend jBCrypt s Java-Code. py-bcrypt ist eine dünne Hülle um den BSD-Code. BCrypt.net ist ein direkter Port von jBCrypt.

Now, PHP selbst unterstützt bcrypt (wenn auch irreführend einfach 'blowfish' genannt) indie Krypta-Funktion. Versionen vor 5.3 erfordern jedoch Support auf dem System selbst, der in der Regel von @ bereitgestellt wir crypt_blowfish. phpass ist das gleiche und empfiehlt die Installation von PHP 5.3 oder Suhosin.

Da viele Benutzer der Anwendung Standard-Shared-Hosting verwenden, möchte ich keine spezielle Konfiguration des Servers erfordern. Ich hatte gehofft, nur den Code aus PHP 5.3 zu stehlen, aber er befindet sich in C, und (nach der kleinen Lektüre, die ich gerade gemacht habe) kann ich den Benutzern des Projekts nicht die Verwendung einer C-Erweiterung vorschreiben.

Ich dachte daran, nur einen reinen PHP-Port für bcrypt zu erstellen, aber schaue mir @ adie Quelle von jBCrypt, Ich bin mir nicht sicher, ob ich sollte, da ich weder mit PHP noch mit Blowfish unglaublich vertraut bin und ein Fehler hier gleichzeitig gefährlich und an erster Stelle schwierig zu erkennen sein könnte.

So präsentiere ich Ihnen zwei (mehrteilige) Fragen:

Ist mein Mangel an PHP-Kenntnissen das Beste von mir? Kann ich wirklich eine der bereits erstellten Implementierungen verwenden? Sollte ich stattdessen nur eine einfache Loooping-Funktion erstellen, die @ aufrusha1() odermd5() wiederholt für eine konfigurierbare Anzahl von Malen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage