【问题标题】:Wildly different encryption times with php and mcrypt?php 和 mcrypt 的加密时间大不相同?
【发布时间】:2014-05-14 03:24:51
【问题描述】:

对于在 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。当然,我以同样的方式构建它们,所以也许这并不令人惊讶。

有什么想法吗?谢谢!

【问题讨论】:

  • 不清楚您在这里比较的是什么。当您在服务器 X 上多次运行相同的代码时,您的时间会大不相同?或者当你在服务器 X 和服务器 Y 上运行相同的代码时?
  • 对不起,我会再试一次:当我在任一服务器上多次运行相同的代码时,700 个字符的加密可能需要(例如)2 到 38 秒。两台服务器上都出现了同样的问题。

标签: php encryption mcrypt


【解决方案1】:

我想是通过mcrypt performance找到的:

上面提到的加密类使用 MCRYPT_DEV_RANDOM 作为它的随机生成器。不幸的是(这是我对这篇文章的总结),如果 /dev/random 的池用完,它会阻塞进程,直到它再次被填满。如果你能忍受质量稍低的随机性,/dev/urandom 会更快,不会有这个问题。因此,将类从 MCRYPT_DEV_RANDOM 更改为 MCRYPT_DEV_URANDOM 应该会使事情变得更好,到目前为止我的测试表明这是正确的。

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 2011-01-24
    • 2015-11-10
    • 1970-01-01
    • 2011-05-02
    • 2014-01-29
    • 2015-07-12
    • 2019-10-03
    相关资源
    最近更新 更多