現在の位置: ホーム> 最新記事一覧> PHP データの暗号化と復号化の完全ガイド: 対称、非対称、およびハッシュの実装

PHP データの暗号化と復号化の完全ガイド: 対称、非対称、およびハッシュの実装

M66 2025-10-14

導入

現代のインターネット環境では、データのセキュリティが最も重要です。機密情報を保護するために、開発者は多くの場合、データの暗号化と復号化を行う必要があります。人気のあるサーバーサイド言語として、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;

コードの説明:

  • 暗号化関数は、openssl_encrypt を使用してデータを暗号化し、base64_encode を使用してそれを読み取り可能な文字列に変換します。
  • 復号化関数は、最初に Base64 でデコードし、次に IV と暗号化されたコンテンツを抽出し、最後に openssl_decrypt を使用して復号化します。
  • openssl_cipher_iv_length は、指定された暗号化アルゴリズムの IV 長を返します。

非対称暗号化アルゴリズムを使用する

非対称暗号化アルゴリズムは、公開キーと秘密キーの 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;

コードの説明:

  • 暗号化関数は、openssl_public_encrypt を使用してデータを暗号化し、base64_encode を使用してデータを文字列に変換します。
  • 復号化関数は、base64_decode を通じてバイナリ データを復元し、openssl_private_decrypt を使用してそれを復号化します。

ハッシュ関数を使う

ハッシュ関数は、任意の長さのデータを固定長のハッシュ値にマッピングし、暗号化や復号化ではなくデータの整合性を検証するためによく使用されます。 PHP では、MD5、SHA1、SHA256 などの関数がよく使用されます。例:

 $data = 'センシティブデータ';

$hashedData = md5($data);
echo 'ハッシュ変化されたデータ: ' 。 $hashedData 。 PHP_EOL;

コードの説明:

  • md5 関数は、指定されたデータの MD5 ハッシュ値を計算します。

結論は

この記事では、PHP を使用して対称暗号化、非対称暗号化、ハッシュ関数などのデータ暗号化と復号化を実装する方法を説明し、完全なサンプル コードを提供します。これらの方法を通じて、開発者は送信中および保存中の機密データのセキュリティを効果的に保護できます。