Я установил пакет php5-cli на свой raspbian (ОС Debian) и загрузил phpseclib в / cli / каталог. Я создал тестовый файл для шифрования текста с помощью открытого ключа (сгенерированного на моем сервере 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
будет пустой. Почему? Это из-за того, что я запускаю файл с терминала e с помощью php5-cli вместо php5? Как я могу получить результат этой операции шифрования? Спасибо.
2 ответа
Вы предоставили правильный исходный код. Если значение $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){
...
}
- Убедитесь, что
error_reporting
включен и поднялся достаточно высоко. - Попробуйте
var_dump($encrypted)
вместо повторения. Документации PHPseclib немного не хватает, и она не детализирует поведение функции Crypt_RSA :: encrypt () при сбое . Он может возвращатьfalse
,NULL
или пустую строку, иecho
не скажет вам, какая именно.
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.