PHP вычисляет большие целочисленные вычисления - PullRequest
0 голосов
/ 28 мая 2018

Я создаю скрипт PHP для моего сайта, который будет запрашиваться клиентом.Сервер должен ответить соответствующим сообщением, а также подписью с использованием RSA.Для того, чтобы подпись была сгенерирована, она должна предварительно сформировать два (или один вместе) pow и mod.Уравнение s = m^d (mod n).И в большинстве случаев s, m и d являются чрезвычайно большими целыми числами, такими как

4469734404104096837429764580934845061283523736702527402872742051805240505404664615264967782650887385837644037614299958863676630939441707937567787879563772416127260032333805678693381552565842160204683672959392802705913819156703613379573565738349149235585010164952052778408063647208096771173475093154490917974997899948301207462141742218985531732928507187811450511092706499289326888705457236944966320563788206136403616537412670548400617858178511373887544380273500238451544917864640793244156569047773433074906247791466420876530066966827069605060742050929459254119941389687342853034996153871651890210106384724986072757985

. Я пробовал много PHP-библиотек, таких как BCMath, phpseclib и GMP, и ни одна из них несмог обработать размер чисел, либо не дав ответа, либо ошибаясь, либо отвечая на абсурдно неправильный ответ.

Кто-нибудь знает библиотеку, которая может предварительно выполнять большие операции pow / mod (powmod)?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Я обнаружил, что решение было https://pear.php.net/package/Math_BigInteger, и что, когда я пытался использовать библиотеку в первый раз, я был A: использовал неправильную функцию и B: я смотрел на неправильную точку данных, чтобы сравнить ее с тем, когда яиспользовал правильную функцию.

0 голосов
/ 28 мая 2018

phpseclib - это

реализации на чистом PHP для целочисленной арифметической библиотеки произвольной точности, полностью соответствующей PKCS # 1 (v2.1) RSA, DES, 3DES, RC4, Rijndael, AES,Blowfish, Twofish, SSH-1, SSH-2, SFTP и X.509

Он имеет собственную реализацию BigInteger для хранения таких больших файлов.Использование этой библиотеки также делает реализацию собственного RSA liv устаревшей.

https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Math/BigInteger.php

...