Я установил пакет 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? Как я могу получить результат этой операции шифрования? Спасибо.

1
bit 19 Дек 2013 в 22:07

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){
    ... 
}
1
JanC 19 Дек 2013 в 18:29
  1. Убедитесь, что error_reporting включен и поднялся достаточно высоко.
  2. Попробуйте var_dump($encrypted) вместо повторения. Документации PHPseclib немного не хватает, и она не детализирует поведение функции Crypt_RSA :: encrypt () при сбое . Он может возвращать false, NULL или пустую строку, и echo не скажет вам, какая именно.
1
Sammitch 19 Дек 2013 в 18:33