-
OpenSSL拡張モジュールのインストール: PHPで非対称暗号化を行うためには、OpenSSL拡張モジュールが必要です。まず、PHPの設定ファイル(php.ini)を編集し、OpenSSL拡張モジュールが有効になっていることを確認します。もし有効になっていない場合は、適切な方法でインストールして有効化してください。
-
鍵の生成: 非対称暗号化には、公開鍵と秘密鍵のペアが必要です。以下のコード例は、RSAアルゴリズムを使用して鍵の生成を行います。
<?php $config = array( "digest_alg" => "sha256", "private_key_bits" => 2048, "private_key_type" => OPENSSL_KEYTYPE_RSA, ); // 鍵の生成 $res = openssl_pkey_new($config); // 秘密鍵の取得 openssl_pkey_export($res, $privateKey); // 公開鍵の取得 $publicKey = openssl_pkey_get_details($res)['key']; // 生成した鍵の表示 echo "秘密鍵: " . $privateKey . "\n"; echo "公開鍵: " . $publicKey . "\n"; ?>
上記のコードでは、2048ビットのRSA秘密鍵とそれに対応する公開鍵が生成されます。
-
暗号化と復号化: 生成した公開鍵を使用してデータを暗号化し、秘密鍵を使用して暗号文を復号化することができます。以下のコード例では、文字列を暗号化して復号化する方法を示します。
<?php $data = "秘密のメッセージ"; // 公開鍵を使用して暗号化 openssl_public_encrypt($data, $encrypted, $publicKey); // 暗号文を表示 echo "暗号文: " . base64_encode($encrypted) . "\n"; // 秘密鍵を使用して復号化 openssl_private_decrypt($encrypted, $decrypted, $privateKey); // 復号化したメッセージを表示 echo "復号化結果: " . $decrypted . "\n"; ?>
上記のコードでは、
$data
変数に格納された文字列が暗号化され、復号化された後に表示されます。
これらのステップを実行することで、PHPで非対称暗号化を実装できます。これにより、安全なデータの伝送や保存が可能になります。