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!