ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用してデータを安全に暗号化および復号化するにはどうすればよいですか?

PHP を使用してデータを安全に暗号化および復号化するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-22 19:14:10807ブラウズ

How to Securely Encrypt and Decrypt Data Using PHP?

PHP でパスワードを安全に暗号化および復号化する方法

外国アカウントの資格情報などの機密ユーザー情報を保存するには、データを保護するための特別な予防措置が必要です安全。暗号化は保護層を提供しますが、平文データへの不正アクセスを防ぐ堅牢な方法を採用することが重要です。

ハッシュと暗号化

ハッシュは、次の場合に推奨されるアプローチです。パスワードの保管場所。暗号化とは異なり、ハッシュはパスワードを元に戻せない固有の形式に変換するため、元のパスワードを取得することが事実上不可能になります。これにより、たとえ攻撃者がハッシュされたパスワードにアクセスしたとしても、ユーザー アカウントを侵害することはできません。

暗号化および復号化関数

暗号化が必要な場合は、PHPテキストを暗号化および復号化するためのいくつかの関数を提供します。一般的な方法の 1 つは、AES-128 としても知られる Rijndael 暗号です。

$key = 'password to (en/de)crypt';
$string = ' string to be encrypted '; // note the spaces

To Encrypt:

$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
    )
);

To復号化:

$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
    ),
    ""
);

警告

暗号化されたデータは、認証されていない場合、パディング オラクル攻撃に対して脆弱になります。認証された暗号化メカニズムは常に暗号化と組み合わせて使用​​する必要があります。

ベスト プラクティス

最高レベルのセキュリティを確保するには、次のベスト プラクティスに従ってください:

  • ランダム暗号化を使用する
  • 暗号化されたデータを平文とは別に保存します。
  • 暗号化キーへのアクセスを制限します。
  • 暗号化を定期的にローテーションする
  • 安全なアルゴリズムを実装し、既知の攻撃から保護する暗号化ライブラリの使用を検討してください。

以上がPHP を使用してデータを安全に暗号化および復号化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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