包含 autoload.php 后 phpseclib 2.0 不工作

phpseclib 2.0 not working after including autoload.php

我正在使用 Composer,这是我第一次尝试使用 phpseclib。我找不到关于它的文档或任何 wiki,就像没有信息一样。

我尝试在 Whosebug 上搜索,但仍然无法正常工作。

这是我的 .php 文件:

<?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

我需要做的就是RSA 签名和验证。还需要能够为 RSA 生成密钥对。

如果有任何关于 phpseclib 的文档或 wiki,请告诉我。我在他们的 Github 上找不到任何东西。他们 link 到此页面 Sourceforge 但它是针对 1.0 的,我只能找到 1 个 2.0 的示例。这就像我见过的最糟糕的文档库。

如果有人知道更好的库请告诉我,我使用这个而不是 openssl 因为我需要 PSS 填充。

假设您正确设置了 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';
?>

与您 post 中的代码的主要区别在于,它没有执行 $rsa = new Crypt_RSA();,而是执行 $rsa = new RSA();。它还删除了不必要的自动加载内容。毫无疑问,您从 http://phpseclib.sourceforge.net/2.0.html but that code doesn't include __DIR__ . '/vendor/autoload.php' - it includes ClassLoader.php 获得了重命名为 autoload.php.

的额外代码

Please if there is any documentation or wiki about phpseclib tell me. I couldn't find anything on their Github. They link to this page Sourceforge but it's for 1.0, I only could find 1 example for 2.0.

当您访问任何带有示例的页面时,您应该会看到一个如下所示的弹出窗口:

Select 2.0 然后你会看到 2.0 的例子。

It's like the worst documented library I've ever seen.

我猜你没看过https://www.openssl.org/docs/哈哈。无论如何,对此有两条评论: