我在PHP中使用opennssl_random_pseudo_bytes()并且执行速度非常慢.我的应用程序经常超时(抛出执行时间限制错误).OpenSSL随机的特殊原因是这么慢吗?我目前在我的开发人员计算机上使用Windows 7 x86.
TML*_*TML 10
在Windows上,openssl_random_pseudo_bytes()调用OpenSSL的RAND_screen()来生成熵.它非常慢,PHP几乎不是第一个遇到这种情况的unix-> windows端口.看起来常见的建议是使用RAND_seed()代替.
值得注意的是,OpenSSL文档指出:
RAND_screen()函数可以方便Windows程序员使用.它将屏幕的当前内容添加到PRNG.对于可以捕获Windows事件的应用程序,通过调用RAND_event()来播种PRNG是一个明显更好的随机源.**应该注意的是,这两种方法都不能在没有用户交互的情况下运行**.
所以这实际上可能是一个经过验证的错误 - 我已经提出了核心开发人员的问题.直到在Win32上为OpenSSL生成熵的更好方法变得可用时,似乎简短的答案是"是的,它在Windows上很慢.很抱歉."
一些讨论问题的其他链接:
在rt.openssl.org上打开Bug
curl开发人员讨论在Win32上收集熵的替代方法
OpenSSL用户列表的Google Groups存档讨论Win32
上RAND_poll()的缓慢另一个关于在mail-archive.com的存档上RAND_screen()缓慢的讨论OpenSSL用户
这显然是PHP <5.3.4中的一个错误.
修复了Windows上openssl_random_pseudo_bytes中可能存在的阻塞行为.(皮埃尔)
http://php.net/ChangeLog-5.php#5.3.4
| 归档时间: |
|
| 查看次数: |
5820 次 |
| 最近记录: |