8

$publicKey = "../ssh/public/pub"; $plaintext = "暗号化する文字列";

$pubKey = openssl_pkey_get_public($publicKey);

openssl_public_encrypt($plaintext, $encrypted, $pubKey);

echo $encrypted;   //encrypted string

上記のコードは次のエラーを生成します

openssl_public_encrypt() [http://php.net/function.openssl-public-encrypt]: key パラメータが有効な公開鍵ではありません [APP/controllers/supportservice_controller.php、144 行目]

次を使用してopensslでキーを作成しました:

1024 ビットの rsa 秘密鍵を生成し、それを暗号化するためのパスフレーズを要求し、openssl genrsa -des3 -out /path/to/privatekey 1024 というファイルに保存します

秘密鍵の公開鍵を生成し、ファイルに保存します

openssl rsa -in /path/to/privatekey -pubout -out /path/to/publickey

4

4 に答える 4

3

PHP 7.x および新しいバージョンのphpseclib (純粋な PHP RSA 実装) では、composer を使用してphpseclibをインストールすると、次のように実行できます。

    # Install the phpseclib from console
    composer require phpseclib/phpseclib:~2.0
    // In your php script:

    use phpseclib\Crypt\RSA;

    $rsa = new RSA();
    $rsa->loadKey($publicKey); # $publicKey is an string like "QEFAAOCAQ8AMIIBCgKCAQEAoHcbG....."
    $plaintext = '...';
    $ciphertext = $rsa->encrypt($plaintext);

    var_dump($ciphertext);

    #to decrypt:
    $rsa->loadKey('...'); // private key
    echo $rsa->decrypt($ciphertext);```



于 2019-01-26T19:00:31.093 に答える