2013-06-21 154 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(); 
    ?>