双方向暗号化: 取得可能なパスワードの保存
概要
パスワードを許可しながら安全に保存するユーザーがそれらを取得するのは困難です。対称暗号化はこのニーズに対応できますが、実装の微妙な違いを理解することが重要です。
PHP の暗号化と復号化
PHP でパスワードを暗号化および復号化するには、 mcrypt または OpenSSL ライブラリ。 mcrypt の使用例を次に示します。
function encrypt($password, $key) { $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM); return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); } function decrypt($encryptedPassword, $key) { $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv); }
最も安全なアルゴリズム
最適な暗号化アルゴリズムは、特定の使用例によって異なります。パスワードを保存する場合、CBC または CTR モードの AES-256 (Rijndael) は一般に堅牢であると考えられています。
秘密キーの保存
秘密キーを安全に保存することが重要です。推奨されるアプローチの 1 つは、ユーザーのパスワードとサーバー側のソルトを組み合わせて使用することです。 PHP では、これは以下を使用して実現できます。
$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); $key = hash('sha256', $userPassword . $salt);
ユーザー入力として秘密キー
ユーザーが信頼できる場合は、取得時に秘密キーの提供を求めます。パスワードを使用すると、セキュリティを強化できます。これにより、サーバー側の侵害から保護されます。
セキュリティ リスク
暗号化されたパスワードは、次の影響を受ける可能性があります。
軽減戦略
これらのリスクを軽減するには、以下を実装します。
以上がPHP で双方向暗号化を使用してパスワードを安全に保存および取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。