PHPでの非対称暗号化の実装方法


  1. OpenSSL拡張モジュールのインストール: PHPで非対称暗号化を行うためには、OpenSSL拡張モジュールが必要です。まず、PHPの設定ファイル(php.ini)を編集し、OpenSSL拡張モジュールが有効になっていることを確認します。もし有効になっていない場合は、適切な方法でインストールして有効化してください。

  2. 鍵の生成: 非対称暗号化には、公開鍵と秘密鍵のペアが必要です。以下のコード例は、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秘密鍵とそれに対応する公開鍵が生成されます。

  3. 暗号化と復号化: 生成した公開鍵を使用してデータを暗号化し、秘密鍵を使用して暗号文を復号化することができます。以下のコード例では、文字列を暗号化して復号化する方法を示します。

    <?php
    $data = "秘密のメッセージ";
    // 公開鍵を使用して暗号化
    openssl_public_encrypt($data, $encrypted, $publicKey);
    // 暗号文を表示
    echo "暗号文: " . base64_encode($encrypted) . "\n";
    // 秘密鍵を使用して復号化
    openssl_private_decrypt($encrypted, $decrypted, $privateKey);
    // 復号化したメッセージを表示
    echo "復号化結果: " . $decrypted . "\n";
    ?>

    上記のコードでは、$data変数に格納された文字列が暗号化され、復号化された後に表示されます。

これらのステップを実行することで、PHPで非対称暗号化を実装できます。これにより、安全なデータの伝送や保存が可能になります。