php和mcrypt的加密时间相差甚远?

php和mcrypt的加密时间相差甚远?,php,encryption,mcrypt,Php,Encryption,Mcrypt,我需要一些基本的加密工具的网站上运行的PHP 5.3.3和CentOS 6.5。我目前正在使用中讨论的加密类(由@johnconde接受的答案)。它是有效的,但我对同一文本的加密时间却大不相同:根据我所做的一些测试,加密一大块700个字符的lorem ipsum可能需要2秒到38秒 这对任何人来说都有意义吗?对于如何减少这些时间(或者至少保持一致性)有什么建议吗?我会发布我的代码,但它实际上只不过是前面提到的SO页面上的内容。可能会提到的几件事: 每次加密时,我都会创建一个新的Encrypti

我需要一些基本的加密工具的网站上运行的PHP 5.3.3和CentOS 6.5。我目前正在使用中讨论的加密类(由@johnconde接受的答案)。它是有效的,但我对同一文本的加密时间却大不相同:根据我所做的一些测试,加密一大块700个字符的lorem ipsum可能需要2秒到38秒

这对任何人来说都有意义吗?对于如何减少这些时间(或者至少保持一致性)有什么建议吗?我会发布我的代码,但它实际上只不过是前面提到的SO页面上的内容。可能会提到的几件事:

  • 每次加密时,我都会创建一个新的Encryption类实例,但这似乎对时间没有任何影响:所有实例的创建时间都差不多;实质性的时间差异在于实际的加密

  • 我的PHP安装使用的是McRypt2.5.8

  • 我在两个不同的服务器上得到了相同的差异——一个本地开发箱和一个DigitalOcean CentOS droplet。当然,我也是用同样的方法建造它们的,所以这也许并不太令人惊讶

有什么想法吗?谢谢

我想是通过以下途径找到的:


上面提到的加密类使用MCRYPT_DEV_RANDOM作为其随机生成器。不幸的是(这是我对本文的总结),如果/dev/random的池用完了,它将阻塞该进程,直到再次填满为止。如果您可以使用质量稍低的随机性,/dev/uradom将更快,并且不会出现此问题。因此,将类从MCRYPT_DEV_RANDOM更改为MCRYPT_DEV_uradom应该会让事情变得更好,我目前的测试表明这是正确的。

不清楚您在这里比较什么。当您在服务器X上多次运行相同的代码时,您的时间会变得非常不同?或者当您在服务器X和服务器Y上运行相同的代码时?抱歉,我将重试:当我在任一服务器上多次运行相同的代码时,700个字符的加密可能需要2到38秒。两台服务器上都存在相同的问题。