【问题标题】:phpseclib not works with php5-cli from terminalphpseclib 不适用于终端的 php5-cli
【发布时间】:2013-12-19 18:07:10
【问题描述】:

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

包括('libs/Crypt/RSA.php'); $rsa = 新的 Crypt_RSA(); $rsa->loadKey($myPublicKey); $encrypted = $rsa->encrypt("我的文本"); echo "结果:" .$encrypted;

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

【问题讨论】:

  • 感谢@JanC 和@Sammitch!那是一把不正确的钥匙。现在一切正常

标签: php debian rsa raspbian phpseclib


【解决方案1】:

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

根据RSA.php文件中的cmets,如果key无效,命令会返回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){
    ... 
}

【讨论】:

    【解决方案2】:
    1. 确保error_reporting 已打开,并且足够高。
    2. 尝试var_dump($encrypted) 而不是回显。 PHPseclib 的文档有点欠缺,并且没有详细说明 Crypt_RSA::encrypt() 函数失败时的行为。它可能会返回false、NULL 或空字符串,而echo 不会告诉你是哪个。

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2020-10-03
      • 2016-06-28
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2020-08-03
      • 2020-01-13
      相关资源
      最近更新 更多