PHP での暗号化/復号化とハッシュの実装
はじめに
Web 開発では、ユーザーの機密データをデータベースに保存する前に暗号化して保護するには不可欠です。 PHP は、データのセキュリティを強化するための堅牢な暗号化およびハッシュ機能を提供します。
暗号化
対称暗号化:
データを対称的に暗号化します。 , PHP は OpenSSL 拡張機能を使用します。安全な暗号化キーとランダム性のための初期化ベクトル (IV) を備えた AES-256-CBC の使用を検討してください。データを 16 バイトのチャンクで暗号化し、暗号化されたデータと IV の両方をデータベースに保存します。
認証された暗号化:
セキュリティを強化するには、別の認証キーを使用してデータを暗号化します。これにより、復号化する前にデータの整合性を検証できます。
復号化
同じ秘密鍵と IV を使用して同じ暗号化アルゴリズムに従い、データを安全に復号化します。 。必要に応じて、暗号化されたデータを復号化する前に再度認証します。
ハッシュ
パスワード ハッシュ:
ユーザー パスワードを次の場所に保存しないようにします。平文。代わりに、bcrypt のような低速で安全なアルゴリズムを使用してハッシュします。 Bcrypt はソルトを使用してブルート フォース攻撃の計算コストを高めます。
検証:
パスワードをハッシュされた同等のものと比較して検証するには、crypt() 関数またはそのPHP 5.5 と同等の、password_verify()。定数時間比較を利用して、タイミング攻撃を防ぎます。
例実装
暗号化:
$encryption_key = openssl_random_pseudo_bytes(32); $iv = openssl_random_pseudo_bytes(16); $enc_data = openssl_encrypt($data, 'AES-256-CBC', $encryption_key, 0, $iv);
復号化:
$dec_data = openssl_decrypt($enc_data, 'AES-256-CBC', $encryption_key, 0, $iv);
パスワードハッシュ:
$hash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 13]);
検証:
if (password_verify($password, $hash)) { // Password valid }
以上がPHP はどのようにして Web アプリケーションのデータを安全に暗号化、復号化、ハッシュ化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。