Maison >développement back-end >Golang >Comment hacher des mots de passe avec Bcrypt dans Golang pour la compatibilité Node.js ?

Comment hacher des mots de passe avec Bcrypt dans Golang pour la compatibilité Node.js ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 12:33:18961parcourir

How to Hash Passwords with Bcrypt in Golang for Node.js Compatibility?

Le hachage de mots de passe avec Bcrypt dans Golang (compatibilité Node.js)

La migration de Node.js et Passport vers Golang pour l'authentification des utilisateurs peut présenter défis, en particulier lors de la gestion des mots de passe cryptés stockés dans la base de données. Ce guide explique comment créer des chaînes hachées bcrypt dans Golang compatibles avec Node.js.

Code de cryptage Node.js

var bcrypt = require('bcrypt');

bcrypt.genSalt(10, function(err, salt) {
    if(err) return next(err);

    bcrypt.hash(user.password, salt, function(err, hash) {
        if(err) return next(err);
        user.password = hash;
        next();
    });
});

Équivalent Golang

Pour obtenir les mêmes résultats de hachage dans Golang, utilisez le golang.org/x/crypto/bcrypt package.

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

Exemple de travail

package main

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

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

    // Hashing the password with the default cost of 10
    hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(hashedPassword))

    // Comparing the password with the hash
    err = bcrypt.CompareHashAndPassword(hashedPassword, password)
    fmt.Println(err) // nil means it is a match
}

Cet exemple démontre l'utilisation de bcrypt dans Golang pour générer un hachage mot de passe équivalent à celui créé dans Node.js, permettant une migration transparente des mots de passe cryptés lors de la transition vers Golang.

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