在openssl_public_encrypt()中获取密钥参数不是有效的公共密钥错误

poo*_*tha 5 php encryption openssl public-key-encryption php-openssl

$ publicKey =“ ../ssh/public/pub”; $ plaintext =“要加密的字符串”;

$pubKey = openssl_pkey_get_public($publicKey);

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

echo $encrypted;   //encrypted string
Run Code Online (Sandbox Code Playgroud)

上面的代码生成以下错误

openssl_public_encrypt()[http://php.net/function.openssl-public-encrypt]:密钥参数不是有效的公用密钥[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

neu*_*ert 0

在 PHP 中使用 OpenSSL 的函数时,公钥必须封装在 X.509 证书中。您可以使用 CSR 创建它。或者您可以使用phpseclib(一个纯 PHP RSA 实现),并直接使用原始公钥。例如。

<?php
include('Crypt/RSA.php');

$rsa = new Crypt_RSA();
$rsa->loadKey('...'); // public key

$plaintext = '...';

//$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$ciphertext = $rsa->encrypt($plaintext);
Run Code Online (Sandbox Code Playgroud)