Maison  >  Article  >  développement back-end  >  Comment obtenir la fonctionnalité de crypt() de PHP avec Blowfish dans Golang ?

Comment obtenir la fonctionnalité de crypt() de PHP avec Blowfish dans Golang ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 06:32:02380parcourir

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

Équivalent Golang de la fonction crypt() de PHP avec prise en charge de Blowfish

La fonction crypt() de PHP offre une gamme de méthodes de hachage, y compris Blowfish. Tenter de reproduire son comportement dans Golang s'est avéré difficile en raison de l'absence d'équivalent direct.

Solution alternative

Malgré l'absence d'équivalent exact de Golang crypt() , une alternative efficace est disponible en utilisant le package golang.org/x/crypto/bcrypt. L'extrait de code suivant fournit un exemple :

<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>

Si le hachage bcrypt de "enter-new-password" correspond au hachage fourni, la vérification sera nulle. Sinon, check sera défini sur un objet d'erreur.

Considérations

La fonction crypt() de PHP prend en charge divers algorithmes de hachage, tels que sha256, sha512 et Blowfish. Dans Golang, il est nécessaire de spécifier explicitement le type de hachage, le coût et d'autres paramètres.

Le préfixe $2a$ dans le hachage fourni suggère l'utilisation d'un algorithme basé sur Blowfish. Certaines tentatives antérieures de solution n'ont pas tenu compte de cela, conduisant à des résultats incorrects.

Le fichier golang.org/x/crypto/bcrypt/bcrypt_test.go offre des exemples supplémentaires sur la façon d'exploiter efficacement ce package.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn