与php和mcrypt的加密时间差别很大?

时间:2014-04-02 17:07:03

标签: php encryption mcrypt

我需要一些基于PHP 5.3.3和CentOS 6.5上运行的站点的基本加密工具。我目前正在使用proper PHP mcrypt encryption methods?中讨论的加密类(@ John-Conde接受的回答)。它可以工作,但是我对同一文本的加密时间非常不同:根据我所做的一些仪器,加密一个700字节的lorem ipsum可能需要2秒到38秒。

这对任何人都有意义,是否有关于如何缩短这些时间(或至少是一致的)的建议?我发布了我的代码,但它实际上只不过是前面提到的SO页面上的内容。可能会提到一些事情:

  • 每次进行加密时,我都会创建一个新的Encryption类实例,但这似乎对时间没有任何影响:所有实例创建时间大致相同;实质性时间差异在实际加密中。

  • 我的PHP安装使用的是mcrypt 2.5.8。

  • 我在两个不同的服务器上获得了相同的差异 - 本地开发盒和DigitalOcean CentOS Droplet。当然,我以同样的方式构建它们,所以也许这并不太令人惊讶。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我认为,通过mcrypt performance找到了它:

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