ホームページ >バックエンド開発 >Golang >Node.js との互換性のために Golang で Bcrypt を使用してパスワードをハッシュする方法は?

Node.js との互換性のために Golang で Bcrypt を使用してパスワードをハッシュする方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-09 12:33:18964ブラウズ

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

Golang の Bcrypt を使用したパスワードのハッシュ (Node.js 互換性)

ユーザー認証のために Node.js および Passport から Golang に移行すると、次のような問題が発生する可能性があります。特に、データベースに保存されている暗号化されたパスワードを処理する場合に問題が発生します。このガイドでは、Node.js と互換性のある bcrypt ハッシュ文字列を Golang で作成する方法について説明します。

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();
    });
});

Golang に相当

同じハッシュ結果を達成するには、 Golang の場合は、golang.org/x/crypto/bcrypt パッケージを使用します。

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

作業例

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
}

この例は、Golang での bcrypt の使用を示します。 Node.js で作成されたものと同等のハッシュ化されたパスワードを生成し、Node.js への移行中に暗号化されたパスワードをシームレスに移行できるようにします。 Golang。

以上がNode.js との互換性のために Golang で Bcrypt を使用してパスワードをハッシュする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。