Обновление PHP-скриптов для использования phpseclib3 вместо phpseclib версии 2.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Обновление PHP-скриптов для использования phpseclib3 вместо phpseclib версии 2.

Сообщение Anonymous »

Я пытаюсь обновить свои скрипты на основе phpseclib до последней версии, то есть версии 3. (Ранее я использовал версию 2.) Я столкнулся с рядом проблем, начиная с того, что класса Crypt_RSA больше не существует. Я вынужден сделать это, потому что обновление MacOS до Tahoe 26.x, похоже, нарушило способность моих удаленных систем подключаться через phpseclib.
Я искал документацию, в которой рассказывается, какие шаги мне нужно предпринять, чтобы обновить мои сценарии до новой версии phpseclib, но безуспешно. Или даже «Начало работы с phpseclib V3», из которого я могу определить свои собственные изменения, начиная с нуля.
Что касается деталей кода, именно здесь кроются мои первоначальные проблемы. Ошибка «Класс не найден» возникла в начале следующего кода:

Код: Выделить всё

$privateKey = new Crypt_RSA() ;
if ($privateKey->loadKey(file_get_contents($this->privateKeyFile))) {
$this->privateKey = $privateKey ;
} else {
$this->privateKey = null ;
}
Итак, пытаясь найти новый метод, я нашел этот ответ. Итак, мой новый код в этом разделе теперь выглядит так:

Код: Выделить всё

// added at top of code:
use phpseclib3\Crypt\PublicKeyLoader;
use phpseclib3\Math\BigInteger;

$modulus  = 'somevalue'; // From the referenced answer. Probably not what I want, but could not find any better
$exponent = 'ZZZZ'; // Probably not what I want, but ...
$modulus  = new BigInteger(base64_decode($modulus), 256);
$exponent = new BigInteger(base64_decode($exponent), 256);
$privateKey = PublicKeyLoader::load([
'n' => $modulus,
'e' => $exponent
]);
if ($privateKey->loadKey(file_get_contents($this->privateKeyFile))) {
$this->privateKey = $privateKey ;
} else {
$this->privateKey = null ;
}
Но это приводит меня к дополнительным проблемам. Во-первых, мне нужно было установить php-gmp (что я сейчас и сделал), и теперь указанный ответ терпит неудачу с ошибкой о методе PublicKeyLoader::load(), которому нужна строка первого параметра, а не массив.... Меня беспокоит, насколько глубока эта кроличья нора. Очевидно, что для этой проблемы грубая сила - неправильный подход.
Может ли кто-нибудь указать мне в правильном направлении, чтобы я мог двигаться дальше с обновлением phpseclib до V3 V2?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -version-2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»