我正在为我的网站创建一个客户端请求的PHP脚本。服务器必须使用相应的消息以及使用RSA的签名进行响应。为了生成签名,它必须预先形成两个(或一个组合的)pow和mod。等式为s = m^d (mod n)
。在大多数情况下,s
,m
和d
是非常大的整数,例如
4469734404104096837429764580934845061283523736702527402872742051805240505404664615264967782650887385837644037614299958863676630939441707937567787879563772416127260032333805678693381552565842160204683672959392802705913819156703613379573565738349149235585010164952052778408063647208096771173475093154490917974997899948301207462141742218985531732928507187811450511092706499289326888705457236944966320563788206136403616537412670548400617858178511373887544380273500238451544917864640793244156569047773433074906247791466420876530066966827069605060742050929459254119941389687342853034996153871651890210106384724986072757985
我已经尝试了很多PHP库,例如BCMath,phpseclib和GMP,并且没有人能够通过不给出答案,错误输出或回答荒谬的错误答案来处理数字的大小。 / p>
有没有人知道可以执行大型pow / mod(powmod)操作的库?
答案 0 :(得分:0)
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
答案 1 :(得分:0)
我发现解决方案是https://pear.php.net/package/Math_BigInteger,当我第一次尝试使用库时A:使用了错误的函数而B:我正在查看错误的数据点以将其与我使用时进行比较正确的功能。