ホームページ >バックエンド開発 >PHPチュートリアル >PHP で暗号化されたパスワードを安全に取得するにはどうすればよいですか?

PHP で暗号化されたパスワードを安全に取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-27 12:52:13939ブラウズ

How Can I Securely Retrieve Encrypted Passwords in PHP?

パスワードの安全な取得: 暗号化とハッシュを超えて

データのセキュリティを確保することは重要ですが、パスワードなどの機密情報を保存すると特有の課題が生じます。暗号化の本質はデータにアクセスできないようにすることにあるため、後で取得するためにデータを暗号化することは直観に反しているように思えるかもしれません。ただし、明確に定義された暗号化と復号化の戦略により、このハードルは克服できます。

PHP では、パスワードに bcrypt のようなハッシュ関数を単純に使用することはできません。これは一方向の変換であり、取得が不可能になるためです。これに対処するには、セキュリティを維持しながら元のパスワードを取得できる暗号化とスクランブル方式を組み合わせて使用​​することを検討してください。

包括的な暗号化ソリューション

安全にするにはパスワードを暗号化および復号化するには、次の PHP を考慮してください。 code:

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted ';
// Encryption
$iv = mcrypt_create_iv(
    mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC),
    MCRYPT_DEV_URANDOM
);

$encrypted = base64_encode(
    $iv .
    mcrypt_encrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        $string,
        MCRYPT_MODE_CBC,
        $iv
    )
);
// Decryption
$data = base64_decode($encrypted);
$iv = substr($data, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(
    mcrypt_decrypt(
        MCRYPT_RIJNDAEL_128,
        hash('sha256', $key, true),
        substr($data, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)),
        MCRYPT_MODE_CBC,
        $iv
    ),
    ""
);

重要な考慮事項

提供されたコードは情報を暗号化しますが、改ざんを防ぐために暗号文を認証しないことに注意することが重要です。セキュリティを強化するには、非認証暗号化のみに依存しないことをお勧めします。

追加リソース

さらに詳しくは、次のリソースを参照してください。洞察:

  • https://stackoverflow.com/a/30189841/2224584
  • https://stackoverflow.c om/a/30166085/2224584
  • https://stackoverflow.com/a/30159120/2224584

注意:暗号化キーのセキュリティ

暗号化キーとして「パスワード」を決して使用しないでください。暗号化キーはランダムな文字列である必要があります。

以上がPHP で暗号化されたパスワードを安全に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。