Используйте RSA, когда запускаете createKey, он всегда зависает, а затем получает отчет об ошибке

Я скачал phpseclib0.3.9.zip. Когда я запускаю этот код, появляется ошибка ниже. Я не знаю, в чем причина.

 <?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'E:/software/PHPRSA');

include 'Crypt/RSA.php';

$rsa = new Crypt_RSA();
extract($rsa->createKey());

$plaintext = 'terrafrost';

$rsa->loadKey($privatekey);
$ciphertext = $rsa->encrypt($plaintext);

$rsa->loadKey($publickey);
echo $rsa->decrypt($ciphertext);
?>

Вот сообщение об ошибке:

         Call Stack
#   Time    Memory  Function    Location
1   0.0020  131696  {main}( )   ..\test1.php:0
2   0.0290  1276184 Crypt_RSA->createKey( ???, ???, ??? )   ..\test1.php:7
3   27.4046 1356352 Math_BigInteger->randomPrime( object(Math_BigInteger)[8], object(Math_BigInteger)[10], bool )   ..\RSA.php:662

Помогите быть оцененным.

0

Решение

Время истекло.

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

Наличие bcmath, gmp или даже openssl значительно ускорит процесс.

Несколько других вещей, которые вы могли бы сделать, чтобы ускорить процесс …

  1. define('CRYPT_RSA_SMALLEST_PRIME', 256) мог бы помочь. Это заставит phpseclib использовать несколько простых RSA. Каждый ключ будет 256-битным, а не 512-битным, поэтому генерация простых чисел будет быстрее. С другой стороны, ваш ключ, вероятно, не будет очень совместим с другими реализациями RSA.

  2. Вы можете использовать параметр timeout и AJAX, чтобы он занимал сколько угодно времени. Больше информации: http://phpseclib.sourceforge.net/rsa/examples.html#timeout

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]