phpseclib不适用于终端的php5-cli

时间:2013-12-19 18:07:11

标签: php debian rsa raspbian phpseclib

我在raspbian(debian OS)上安装了php5-cli软件包,并在/ cli /目录中下载了phpseclib。 我创建了一个测试文件,用这种方式用公钥加密文本(在我的apache服务器上生成我有相同的库):     

    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执行文件? 如何获得此加密操作的结果? 感谢。

2 个答案:

答案 0 :(得分: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)

  1. 确保error_reporting已开启,并且调高到足够高。
  2. 尝试var_dump($encrypted)而非回音。 PHPseclib的文档有点缺乏,并没有详细说明Crypt_RSA :: encrypt()函数失败时的行为。它可能会返回falseNULL或空字符串,echo不会告诉您哪个。