【发布时间】:2013-03-04 18:02:13
【问题描述】:
我的印象是 phpseclib 不需要 openssl 但是当我尝试以下代码时...
$rsa = new Crypt_RSA();
$key = $rsa->createKey();
如果它使用 openssl 函数,我会收到以下错误。有点困惑。
Warning: openssl_pkey_export(): cannot get key from parameter 1 in /RSA.php on line 509
Warning: openssl_pkey_get_details() expects parameter 1 to be resource, boolean given in /RSA.php on line 510
Warning: array_values() expects parameter 1 to be /RSA.php on line 513
Warning: call_user_func_array() expects parameter 2 to be array, null given in /RSA.php on line 513
Warning: array_values() expects parameter 1 to be array, boolean given in /RSA.php on line 514
Warning: call_user_func_array() expects parameter 2 to be array, null given in /RSA.php on line 514
【问题讨论】:
-
安装有一个
openssl.cnf文件,所以它看起来可能需要 OpenSSL。你在哪里读到它没有? -
该网站声称“它适用于 PHP4+ [...] 并且不需要任何扩展”phpseclib.sourceforge.net
-
如果它确实需要openssl,我一直在尝试找到一种在Ubuntu 12上使用openssl安装php的快速方法。我担心用openssl编译php会很容易,但我不知道将手动编译安装集成到 apache2 中是多么容易。任何有用的资源都会有所帮助(如果需要 openssl)。
-
该网站说:“phpseclib 被设计为超级兼容。它适用于 PHP4+(PHP4,假设使用 PHP_Compat)并且不需要任何扩展。出于速度的目的, 如果 mcrypt 作为 gmp 或 bcmath 可用(按此顺序),则使用 mcrypt,但它们不是必需的。“我认为 mcrypt 反过来可能会使用 openssl,至少用于随机数生成,当它可用时.
-
您已经安装了 OpenSSL。如果你不这样做,
openssl_pkey_export函数甚至不会存在,但它确实存在。我认为问题在于您没有 openssl.cnf 存在 phpseclib 期望的地方。有关更多信息,请参阅我的答案。
标签: php encryption rsa phpseclib