phpseclib 2.0 не работает после включения автозагрузки. php - PullRequest
0 голосов
/ 23 марта 2020

Я использую Composer, и я впервые пытаюсь использовать phpseclib. Я не могу найти документы или любую вики об этом, похоже, что информации нет.

Я попытался выполнить поиск по stackoverflow, но все равно не смог заставить его работать.

Это мой . php file:

<?php
require __DIR__ . '/../vendor/autoload.php';

$loader = new Composer\Autoload\ClassLoader();
$loader->addPsr4('phpseclib\\', __DIR__ . '/../vendor/phpseclib/');
$loader->register();

use phpseclib\Crypt\RSA;

$rsa = new Crypt_RSA();

$plaintext = 'terrafrost';

$rsa->loadKey($privatekey);
$signature = $rsa->sign($plaintext);

$rsa->loadKey($publickey);
echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';
?>

Это ошибка: [23-Mar-2020 14:04:51 UTC] PHP Fatal error: require(): Failed opening required '[23-Mar-2020 00:53:12 UTC] PHP Fatal error: Uncaught Error: Class 'Crypt_RSA' not found in /home/123/domains/asd.com/public_html/Auth/test.php:93

  • Это. php находится в: public_html / Auth
  • Автозагрузка находится в: public_html / vendor / autoload. php
  • Composer Папка находится в: public_html / vendor / composer

Все, что мне нужно сделать, это RSA подписывает и проверяет. Также необходимо иметь возможность генерировать пару ключей для RSA.

Пожалуйста, если есть какая-либо документация или вики о phpseclib, скажите мне. Я ничего не мог найти на их Github. Они ссылаются на эту страницу Sourceforge но это для 1.0, я мог найти только 1 пример для 2.0. Это как худшая документированная библиотека, которую я когда-либо видел.

Если кто-нибудь знает лучшую библиотеку, пожалуйста, скажите мне, я использую ее вместо openssl, потому что мне нужно заполнение PSS.

1 Ответ

0 голосов
/ 23 марта 2020

Если вы правильно настроили Composer, попробуйте следующее:

<?php
require __DIR__ . '/vendor/autoload.php';

use phpseclib\Crypt\RSA;

$rsa = new RSA();

$plaintext = 'terrafrost';

$rsa->loadKey($privatekey);
$signature = $rsa->sign($plaintext);

$rsa->loadKey($publickey);
echo $rsa->verify($plaintext, $signature) ? 'verified' : 'unverified';
?>

Ключевое отличие от кода в вашем посте в том, что вместо $rsa = new Crypt_RSA(); он делает $rsa = new RSA();. Он также удаляет ненужные элементы автозагрузки. Без сомнения, вы получили этот дополнительный код от http://phpseclib.sourceforge.net/2.0.html, но этот код не включает __DIR__ . '/vendor/autoload.php' - он включает ClassLoader. php, переименованный в автозагрузку. php.

Пожалуйста, если есть какая-либо документация или вики о phpseclib, скажите мне. Я ничего не мог найти на их Github. Они ссылаются на эту страницу Sourceforge, но это для 1.0, я мог найти только 1 пример для 2.0.

Когда вы посещаете любую страницу с примерами, вы должны получить всплывающее окно, которое выглядит так:

enter image description here

Выберите 2.0, и вы увидите примеры для 2.0.

Это как худшая документированная библиотека из всех, что я когда-либо видел.

Я думаю, вы не видели https://www.openssl.org/docs/ лол. В любом случае, два комментария по этому поводу:

  • , если вам не нравится документация, вы можете улучшить ее самостоятельно, сделав PR или создав проблемы в https://github.com/phpseclib/docs
  • Насколько я понимаю, для ветки 3.0 документация переписывается с нуля с использованием https://docusaurus.io/
...