2013-12-19 59 views
1

我在我的raspbian(debian OS)上安装了php5-cli软件包,我在/ cli /目录下载了phpseclib。 我创建了一个测试文件加密与公钥文本以这种方式(关于这一点我有相同的库我的Apache服务器中产生): phpseclib无法从终端使用php5-cli

 
    include('libs/Crypt/RSA.php'); 
    $rsa = new Crypt_RSA(); 
    $rsa->loadKey($myPublicKey); 
    $encrypted = $rsa->encrypt("my text"); 
    echo "result: " .$encrypted; 

如果我尝试键入PHP test.php的result变量是空的。为什么?这是由于我使用php5-cli而不是php5从终端e执行文件? 如何获得此加密操作的结果? 谢谢。

+1

感谢@JanC和@Sammitch!这是一个不正确的关键。现在所有的作品 – bit

回答

1

您提供的源代码是正确的。如果$encrypted的值为空,则可能由于loadKey中提供了错误的密钥。

根据文件RSA.php中的注释,那么该命令将返回false如果密钥无效:

/** 
* Loads a public or private key 
* 
* Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed) 
* 
* @access public 
* @param String $key 
* @param Integer $type optional 
*/ 
function loadKey($key, $type = false){ 
    ... 
} 
1
  1. 确保error_reporting上,并打开了足够高。
  2. 尝试var_dump($encrypted)而不是回显。 PHPseclib的文档有点欠缺,并且没有详细说明在失败上Crypt_RSA :: encrypt()函数的行为。它可能返回false,NULL或一个空字符串,并且echo不会告诉你哪个。