Golang/App Engine でのユーザー パスワードの保護
ユーザー パスワードのセキュリティの確保はどのアプリケーションでも最優先であり、Golang/App Engine は次のようなサービスを提供します。これを実現するための複数のオプション。 bcrypt ライブラリは、syscall への依存関係により適切ではない可能性がありますが、考慮すべき代替アプローチがいくつかあります。
PBKDF2
推奨されるオプションの 1 つは、PBKDF2 アルゴリズムです。 crypto/pbkdf2 パッケージを介して入手できます。この関数は、パスワード、ソルト、およびいくつかのパラメーターを入力として受け取り、派生キーを出力します。ソルトは、ユーザーごとにランダムに生成された一意の値である必要があります。
例:
<code class="go">import "golang.org/x/crypto/pbkdf2" func hashPassword(password, salt []byte) []byte { defer zeroize(password) return pbkdf2.Key(password, salt, 4096, sha256.Size, sha256.New) }</code>
bcrypt
もう 1 つの実行可能なオプションは、高いセキュリティと計算コストで知られる bcrypt アルゴリズムです。 Go は、golang.org/x/crypto/bcrypt パッケージを通じて bcrypt の純粋な Go 実装を提供します。
例:
<code class="go">import "golang.org/x/crypto/bcrypt" func hashPassword(password []byte) ([]byte, error) { defer zeroize(password) return bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) }</code>
比較
PBKDF2 と bcrypt はどちらもパスワード ハッシュの安全なオプションです。ただし、PBKDF2 はよりカスタマイズ可能であり、使用する反復回数とハッシュ関数を指定できます。一方、bcrypt は、そのシンプルさと速度で知られています。
最適なオプションの選択
PBKDF2 と bcrypt のどちらを選択するかは、特定の要件によって異なります。カスタマイズが重要な場合は、PBKDF2 が適切な選択です。速度とシンプルさが重要な場合は、bcrypt が推奨されるオプションです。レインボー テーブル攻撃を防ぐために、各ユーザーに必ずソルト値を使用してください。
以上がPBKDF2 と bcrypt: Golang/App Engine に最適なパスワード ハッシュ アルゴリズムはどれですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。