php - OpenSSL 还是 Mcrypt? (openssl_encrypt 或 mcrypt_encrypt)

标签 php openssl mcrypt

<分区>

我想这是一个利弊的问题。

对于简单的数据加密:

使用 openssl_encrypt 而不是 mcrypt_encrypt 的真正好处是什么?

最佳答案

不要使用 mcrypt。如果您在代码中输入单词 mcrypt,您可能会犯错误。尽管可以提供一个构建在 mcrypt 之上的相对安全的加密库(早期版本的 defuse/php-encryption 做到了),但将您的代码切换到 openssl 将提供更好的安全性、性能、可维护性和可移植性。 source: paragonie.com

速度 openssl 更快。看看下表source: jrm.cc

# php examples/compare.php
Results:
+---------+--------+----------+-------------+--------------+
| ext     | keylen | textsize | (en/de)code | ops/sec      |
+---------+--------+----------+-------------+--------------+
| mcrypt  |    128 | short    | enc         |   5626.38872 |
| mcrypt  |    128 | short    | dec         |   5729.21909 |
| mcrypt  |    192 | short    | enc         |   5694.37256 |
| mcrypt  |    192 | short    | dec         |   5682.78434 |
| mcrypt  |    256 | short    | enc         |   5644.36358 |
| mcrypt  |    256 | short    | dec         |   5661.23080 |
| mcrypt  |    128 | medium   | enc         |   5583.97725 |
| mcrypt  |    128 | medium   | dec         |   5650.75122 |
| mcrypt  |    192 | medium   | enc         |   5591.54051 |
| mcrypt  |    192 | medium   | dec         |   5552.83950 |
| mcrypt  |    256 | medium   | enc         |   5524.18533 |
| mcrypt  |    256 | medium   | dec         |   5513.65563 |
| mcrypt  |    128 | long     | enc         |   4773.67544 |
| mcrypt  |    128 | long     | dec         |   4774.14273 |
| mcrypt  |    192 | long     | enc         |   4633.75035 |
| mcrypt  |    192 | long     | dec         |   4634.35450 |
| mcrypt  |    256 | long     | enc         |   4494.90529 |
| mcrypt  |    256 | long     | dec         |   4280.92422 |
| openssl |    128 | short    | enc         | 168581.35048 |
| openssl |    128 | short    | dec         | 170417.03234 |
| openssl |    192 | short    | enc         | 172052.83452 |
| openssl |    192 | short    | dec         | 171349.94689 |
| openssl |    256 | short    | enc         | 171112.27154 |
| openssl |    256 | short    | dec         | 171644.45899 |
| openssl |    128 | medium   | enc         | 166944.11718 |
| openssl |    128 | medium   | dec         | 169084.25381 |
| openssl |    192 | medium   | enc         | 166665.50107 |
| openssl |    192 | medium   | dec         | 168459.47466 |
| openssl |    256 | medium   | enc         | 163878.40900 |
| openssl |    256 | medium   | dec         | 167946.82470 |
| openssl |    128 | long     | enc         | 110370.61207 |
| openssl |    128 | long     | dec         | 142731.36868 |
| openssl |    192 | long     | enc         | 103798.85171 |
| openssl |    192 | long     | dec         | 135396.21667 |
| openssl |    256 | long     | enc         |  96767.81100 |
| openssl |    256 | long     | dec         | 132203.99672 |
+---------+--------+----------+-------------+--------------+

废弃软件 mcrypt 基本上是废弃软件。因此,特别是如果您是从头开始(或者作为 php.net comment states 您在 2015 年编写代码),请正确执行。使用 OpenSSL。 source: stackoverflow Artjom B.

关于php - OpenSSL 还是 Mcrypt? (openssl_encrypt 或 mcrypt_encrypt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36571743/

相关文章:

javascript - 禁用第二个子单选按钮,然后选择 1 个选项,反之亦然

php - Zend FR finfo 错误警告 : string extension `B' invalid

php - 用于多个页面的 extJs MVC

svn - 如何完全卸载 TortoiseSVN 1.8.4

php - 如何使用dcpcrypt在delphi和php之间同步加密

php - 如何检查php中是否存在mcrypt扩展

php - javascript在刷新页面后保持复选框选中状态

c++ - openssl BF_cfb64_encrypt 线程安全

c++ - 如何以编程方式获取用于验证客户端证书的 CA 证书

php - mcrypt_encrypt 到 openssl_encrypt 和 OPENSSL_ZERO_PADDING 问题