質問:
Go 関数を模倣するにはどうすればよいですか?特定の入力文字列に対する PHP の crypt() 関数の動作。ここで、CRYPT_BLOWFISH による PHP の crypt() 評価の結果は true?
試行と期待される結果:
試行は行われています。これを達成するために作成されましたが、成功しませんでした:
望ましい結果は、Go crypt() 関数が文字列「enter-new-password」と「$2a$09$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj」を正しく評価することです。 .8jgmtzZP2" を true に設定します。PHP の crypt() と同様です。
解決策:
Go では正確に PHP crypt() に相当するものが見つかりませんでしたが、代替手段ソリューションが実装されました:
<code class="go">import "golang.org/x/crypto/bcrypt" check := bcrypt.CompareHashAndPassword([]byte("a$f5561d2634fb28a969f2dO8QeQ70f4bjCnF/.GvPpjj.8jgmtzZP2"), []byte("enter-new-password")) if check == nil { fmt.Println("Passwords match") } else { fmt.Println("Passwords don't match") }</code>
このアプローチでは、golang.org/x/crypto/bcrypt モジュールを利用して、提供されたパスワードと保存されているハッシュ値を比較します。 CompareHashAndPassword() 関数は、パスワードが一致する場合は nil を返し、一致しない場合はエラーを返します。
補足:
PHP の crypt 関数は複数のハッシュ アルゴリズムを提供していることに注意することが重要です。 sha256、sha512、フグなど。 Go では、特定のアルゴリズムを処理するためにさまざまなモジュールが必要になることがよくあります。この場合、PHP の例で使用されている Blowfish タイプのハッシュは、試行されたどの Go モジュールでもネイティブにサポートされていません。したがって、代わりに bcrypt モジュールが使用されました。
以上がGo で CRYPT_BLOWFISH と同等の PHP の crypt() 関数を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。