我在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执行文件?
如何获得此加密操作的结果?
感谢。
答案 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)
error_reporting
已开启,并且调高到足够高。var_dump($encrypted)
而非回音。 PHPseclib的文档有点缺乏,并没有详细说明Crypt_RSA :: encrypt()函数失败时的行为。它可能会返回false
,NULL
或空字符串,echo
不会告诉您哪个。