2013-06-21 195 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($明文,$加密,'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(); 
    ?>