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