2013-06-21 24 views
2

Я попробовал этот простой код:открытый ключ не действителен PHP RSA

<?php 

$publicKey = openssl_pkey_get_public("public.pem"); 
$plaintext = "String to encrypt"; 

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

echo $encrypted; //encrypted string 

?> 

, но я получаю сообщение об ошибке.

Предупреждение: openssl_public_encrypt(): ключевой параметр не является допустимым открытого ключа в C: \ XAMPP \ HTDOCS \ шифровать \ encrypt_rsa.php на линии 6

+0

Я предполагаю, что 'public.pem' уже открытый ключ, таким образом, нет необходимости извлекать его с помощью' openssl_pkey_get_public ("public.pem") '- просто использовать его как' openssl_public_encrypt ($ открытый текст, $ encrypted, 'public.pem'); '. – shadyyx

+0

по-прежнему та же проблема :( – user2467703

+1

Можете ли вы опубликовать содержимое 'public.pem' в своем вопросе? –

ответ

0

Вы можете использовать phpseclib, чистый PHP реализация RSA: http://www.php.net/manual/en/function.openssl-public-encrypt.php

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

    $privatekey = file_get_contents('private.key'); 

    $rsa = new Crypt_RSA(); 
    $rsa->loadKey($privatekey); 

    $plaintext = new Math_BigInteger('aaaaaa'); 
    echo $rsa->_exponentiate($plaintext)->toBytes(); 
    ?>