ホームページ > バックエンド開発 > Golang > Node.js の Bcrypt と Golang の Bcrypt 間のパスワード ハッシュの互換性を確保するにはどうすればよいですか?

Node.js の Bcrypt と Golang の Bcrypt 間のパスワード ハッシュの互換性を確保するにはどうすればよいですか?

DDD
リリース: 2024-12-06 06:09:15
オリジナル
970 人が閲覧しました

How Can I Ensure Compatibility Between Node.js's Bcrypt and Golang's Bcrypt for Password Hashing?

Node.js の Bcrypt と互換性のある Golang でのパスワードのハッシュ

Node.js では、ユーザー パスワードのハッシュに bcrypt パッケージがよく使用されます。 Golang に移行する場合、データベースに保存されている既存のハッシュされたパスワードとの互換性を維持することが重要です。

Node.js Bcrypt Hashing Code

提供されている Node.js コードbcrypt モジュールを利用してハッシュ化された文字列を生成します。ソルトを作成する genSalt と、パスワードとソルトを使用してハッシュを生成するハッシュという 2 つの連続した関数を利用します。

Golang Bcrypt Hashing Equivalent

を使用した同等の Golang 実装。 golang.org/x/crypto/bcrypt パッケージは以下に似ています:

hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost);
ログイン後にコピー

作業例

互換性を示すために、次のコード例は、Golang でパスワードをハッシュし、Node.js で生成されたパスワードと照合して検証する方法を示しています。 hash:

package main

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

func main() {
    // Generate a hash from a password.
    password := []byte("SecretPassword")
    hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
    if err != nil {
        panic(err)
    }
    fmt.Println("Generated Hash:", string(hashedPassword))

    // Simulate Node.js-generated hash.
    nodejsHash := []byte("a$n8J51m8dYIm/3CmaFCizgO93Gkj/3RZIiI4S2G8NkyL2fKvsBpfHy")

    // Compare with the Golang-generated hash.
    err = bcrypt.CompareHashAndPassword(nodejsHash, password)
    if err != nil {
        fmt.Println("Passwords do not match.")
    } else {
        fmt.Println("Passwords match.")
    }
}
ログイン後にコピー

使用法

このコードを使用するには、まず、例に示すように、必要な Golang パッケージがインストールおよびインポートされていることを確認します。次に、パスワードを GenerateFromPassword に渡すだけでハッシュ化された文字列が生成されます。パスワードを検証するには、CompareHashAndPassword を使用して、データベースからハッシュ化されたパスワードと提供されたパスワードを比較します。返されたエラーが nil の場合、パスワードは一致し、Node.js と Golang 標準の両方に準拠しています。

以上がNode.js の Bcrypt と Golang の Bcrypt 間のパスワード ハッシュの互換性を確保するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート