現代のインターネット環境では、データのセキュリティが最も重要です。機密情報を保護するために、開発者は多くの場合、データの暗号化と復号化を行う必要があります。人気のあるサーバーサイド言語として、PHP は豊富な暗号化関数とライブラリを提供し、複数の暗号化アルゴリズムをサポートしています。この記事では、PHP を使用してデータの暗号化と復号化を実装する方法を説明し、実践的なサンプル コードを示します。
対称暗号化アルゴリズムは、共有キー暗号化とも呼ばれる、最も一般的に使用される暗号化方法です。暗号化と復号化には同じキーが使用されます。 PHP は、AES、DES、3DES などのさまざまな対称暗号化アルゴリズムをサポートしています。AES-256-CBC アルゴリズムを使用した例を次に示します。
関数トークン変化($data, $key) { $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc')); $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv); returnbase64_encode($iv . $encrypted); } 関数復号変化($data, $key) { $data = Base64_decode($data); $iv = substr($data, 0, openssl_cipher_iv_length('aes-256-cbc')); $encrypted = substr($data, openssl_cipher_iv_length('aes-256-cbc')); return openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv); } $key = '秘密キー'; $data = 'センシティブデータ'; $encryptedData = トークン変化($data, $key); echo 'トークン変化されたデータ: ' 。 $encryptedData 。 PHP_EOL; $decryptedData = 復号変化($encryptedData, $key); echo '復号変化されたデータ: ' 。 $decryptedData 。 PHP_EOL;
コードの説明:
非対称暗号化アルゴリズムは、公開キーと秘密キーの 2 つのキーを使用します。公開キーは暗号化に使用され、秘密キーは復号化に使用されます。 PHP は RSA などのアルゴリズムをサポートしています。サンプルコードは次のとおりです。
関数トークン変化($data, $publicKey) { openssl_public_encrypt($data, $encrypted, $publicKey); Base64_encode($encrypted) を戻るします。 } 関数 decrypt($encryptedData, $privateKey) { openssl_private_decrypt(base64_decode($encryptedData), $decrypted, $privateKey); $decrypted を戻るします。 } $publicKey = openssl_pkey_get_public('file://path/to/public_key.pem'); $privateKey = openssl_pkey_get_private('file://path/to/private_key.pem'); $data = 'センシティブデータ'; $encryptedData = encrypt($data, $publicKey); echo 'トークン変化されたデータ: ' 。 $encryptedData 。 PHP_EOL; $decryptedData = 復号変化($encryptedData, $privateKey); echo '復号変化されたデータ: ' 。 $decryptedData 。 PHP_EOL;
コードの説明:
ハッシュ関数は、任意の長さのデータを固定長のハッシュ値にマッピングし、暗号化や復号化ではなくデータの整合性を検証するためによく使用されます。 PHP では、MD5、SHA1、SHA256 などの関数がよく使用されます。例:
$data = 'センシティブデータ'; $hashedData = md5($data); echo 'ハッシュ変化されたデータ: ' 。 $hashedData 。 PHP_EOL;
コードの説明:
この記事では、PHP を使用して対称暗号化、非対称暗号化、ハッシュ関数などのデータ暗号化と復号化を実装する方法を説明し、完全なサンプル コードを提供します。これらの方法を通じて、開発者は送信中および保存中の機密データのセキュリティを効果的に保護できます。