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 サイトの他の関連記事を参照してください。