【发布时间】:2017-08-27 10:47:15
【问题描述】:
我已经在 php 中实现了 RSA,我的私钥是 640 位长,我使用中文提醒定理来获得更快的结果,但对于 50 位长的单次解密(AES关键)我认为这非常慢,考虑到在大多数 https 网站上它不超过毫秒。
$dec = bcmod( bcadd( bcmul(bcmul($q,$cp),bcpowmod(bcmod($keyrsa,$p),$dp,$p)), bcmul(bcmul($p,$cq),bcpowmod(bcmod($keyrsa,$p),$dp,$p)) ) , $n );
如果您有兴趣,这就是我实现它的方式。几乎所有的变量都是预先计算好的。
在 python 中使用相同的算法非常快,但由于某种原因 php 仍然较慢。
有更好的实现方式吗?
大多数 HTTPS 网站是如何在如此多的流量下实现如此快速的?
【问题讨论】:
-
您使用的是哪个版本的 PHP,在哪个平台上?另请参阅:3v4l.org/unrRL 您可以将自己的代码放在那里并 eval() 以查看性能。
-
我在 000webhost 上使用 php 7.1.7,它没有详细说明其规格。
-
也许在托管上多花点钱? :-) 不,真的,这会产生巨大的影响。我也注意到了这一点:php.net/manual/en/function.openssl-private-encrypt.php 但说实话,我还没有真正研究过这个,所以我真的帮不了你。
-
3v4l.org 停止了代码的运行,显然它在他们的服务器上也花了很长时间,openssl 用于对称加密而不是非对称,无论如何谢谢。
-
如果你在代码中给出了变量的值,我可以做一些测试,但是代码不完整,所以没有测试。我有一台服务器,所以我可以简单地查看您的代码占用我的代码多长时间。
标签: php performance encryption rsa