Maison >développement back-end >Golang >Comment puis-je garantir la compatibilité du hachage de mot de passe Bcrypt entre Go et Node.js ?

Comment puis-je garantir la compatibilité du hachage de mot de passe Bcrypt entre Go et Node.js ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-03 07:30:10665parcourir

How Can I Ensure Bcrypt Password Hashing Compatibility Between Go and Node.js?

Compatibilité du hachage de mot de passe Bcrypt entre Go et Node.js

Lors de la migration de Node.js vers Go, il est essentiel de maintenir une compatibilité descendante avec les mots de passe des utilisateurs stockés dans la base de données. Cela nécessite de répliquer la fonctionnalité de hachage de mot de passe bcrypt de Node.js dans Go.

Dans Node.js, le code de cryptage bcrypt utilise la bibliothèque bcrypt pour générer un hachage salé à partir du mot de passe d'un utilisateur. Le code équivalent dans Go, utilisant le package golang.org/x/crypto/bcrypt, est :

hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)

Cette fonction produit une chaîne de mot de passe hachée compatible avec la sortie générée par le code Node.js.

L'exemple Go suivant illustre le processus de hachage de mot de passe bcrypt :

package main

import (
    "golang.org/x/crypto/bcrypt"
    "fmt"
)

func main() {
    password := []byte("SomeSecretPassword")

    hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(hashedPassword))

    err = bcrypt.CompareHashAndPassword(hashedPassword, password)
    if err == nil {
        fmt.Println("Password matches hash.")
    } else {
        fmt.Println("Password does not match hash.")
    }
}

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