Heim >Backend-Entwicklung >Golang >Wie erreicht man die Funktionalität von PHPs crypt() mit Blowfish in Golang?

Wie erreicht man die Funktionalität von PHPs crypt() mit Blowfish in Golang?

Susan Sarandon
Susan SarandonOriginal
2024-10-28 06:32:02490Durchsuche

How to Achieve the Functionality of PHP's crypt() with Blowfish in Golang?

Golang-Äquivalent der crypt()-Funktion von PHP mit Unterstützung für Blowfish

Die crypt()-Funktion von PHP bietet eine Reihe von Hashing-Methoden, einschließlich Blowfish. Der Versuch, sein Verhalten in Golang zu reproduzieren, hat sich aufgrund des Fehlens eines direkten Äquivalents als schwierig erwiesen.

Alternative Lösung

Trotz des Fehlens eines genauen Golang-crypt()-Äquivalents Eine effektive Alternative ist mit dem Paket golang.org/x/crypto/bcrypt verfügbar. Der folgende Codeausschnitt stellt ein Beispiel dar:

<code class="go">import "golang.org/x/crypto/bcrypt"

// Check whether the bcrypt version of "enter-new-password" matches "a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2".
check := bcrypt.CompareHashAndPassword([]byte("a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"), []byte("enter-new-password"))
log.Println(check)</code>

Wenn der bcrypt-Hash von „enter-new-password“ mit dem bereitgestellten Hash übereinstimmt, ist die Prüfung gleich Null. Andernfalls wird die Prüfung auf ein Fehlerobjekt gesetzt.

Überlegungen

Die crypt()-Funktion von PHP unterstützt verschiedene Hashing-Algorithmen wie sha256, sha512 und blowfish. In Golang ist es notwendig, den Hash-Typ, die Kosten und andere Parameter explizit anzugeben.

Das Präfix $2a$ im bereitgestellten Hash legt die Verwendung eines Blowfish-basierten Algorithmus nahe. Einige frühere Lösungsversuche berücksichtigten dies nicht, was zu falschen Ergebnissen führte.

Die Datei golang.org/x/crypto/bcrypt/bcrypt_test.go bietet zusätzliche Beispiele, wie dieses Paket effektiv genutzt werden kann.

Das obige ist der detaillierte Inhalt vonWie erreicht man die Funktionalität von PHPs crypt() mit Blowfish in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn