2013-09-17 2 views
1

$ publicKey = "../ssh/public/pub"; $ plaintext = "String to encrypt";Получить ключевой параметр не является допустимой ошибкой открытого ключа в openssl_public_encrypt()

$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]: ключевой параметр не является допустимым открытым ключом [APP/контроллеры/supportservice_controller.php, строка 144]

Я создал ключи с OpenSSL с помощью:

генерировать 1024 битную RSA секретный ключ, задать парольную фразу, чтобы зашифровать его и сохранить в файл OpenSSL genrsa -des3 -out/path/to/privatekey 10 24

генерируют открытый ключ для закрытого ключа и сохранить в файл

OpenSSL RSA -in/путь/к/PrivateKey -pubout -out/путь/к/ОткрытыйКлюч

ответ

0

Открытый ключ должен быть инкапсулированным в сертификат X.509 при использовании функций OpenSSL в PHP. Вы можете создать это с помощью CSR. Или вы можете использовать phpseclib, a pure PHP RSA implementation и использовать открытый открытый ключ напрямую. например.

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

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

$plaintext = '...'; 

//$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); 
$ciphertext = $rsa->encrypt($plaintext); 
Смежные вопросы