Maison > développement back-end > Golang > le corps du texte

Existe-t-il un équivalent True Go à la fonction crypt() de PHP ?

Linda Hamilton
Libérer: 2024-10-29 05:10:31
original
296 Les gens l'ont consulté

Is There a True Go Equivalent to PHP's crypt() Function?

Trouver un équivalent Go pour la fonction crypt() de PHP

Fonction Crypt en PHP et Golang

Introduction au problème

La fonction PHP crypt() génère une valeur hachée d'une chaîne donnée en utilisant un algorithme spécifié. Une question récente s'est posée à la recherche d'un équivalent Golang de cette fonction qui produirait des résultats identiques pour des valeurs d'entrée et de hachage spécifiques.

Tentatives infructueuses

Plusieurs tentatives ont été faites pour implémenter la Go équivalent à la fonction crypt() de PHP :

  • Tentative 1 :Le module go-crypt n'a pas produit le même résultat.
  • Tentative 2 : La définition d'une fonction de cryptage personnalisée utilisant l'interopérabilité C a également échoué.
  • Tentative 3 : Le package bcrypt ne prenait pas en charge l'algorithme CRYPT_BLOWFISH utilisé par PHP5.3 et versions antérieures.

Solution

Même si on n'a pas trouvé d'équivalent exact à la "fonction Go crypt", une alternative a été découverte :

  • En utilisant le golang.org/x/crypto/bcrypt, la fonction bcrypt.CompareHashAndPassword() peut être utilisée pour comparer un mot de passe en texte brut avec une valeur hachée.

Exemple

Le code Go suivant peut être utilisé :

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

check := bcrypt.CompareHashAndPassword([]byte("a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"), []byte("enter-new-password"))
log.Println(check)</code>
Copier après la connexion

Ce code retournera nul si la version bcrypt de "enter-new-password" est la même que la valeur de hachage fournie ; sinon, il renverra une erreur.

Notes supplémentaires

  • La fonction crypt() de PHP prend en charge divers algorithmes de hachage, notamment sha256, sha512, Blowfish, etc.
  • Dans Go, il est nécessaire de spécifier explicitement le type de hachage et le coût lors de l'utilisation du package bcrypt.
  • Pour le scénario spécifique de la question, l'existence de $2a$ comme préfixe dans la valeur de hachage suggérait l'utilisation d'un hachage de type Blowfish.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal