根据here发布的 comments ,将在PHP7.2中删除mcrypt扩展名is deprecated.所以我在寻找另一种加密密码的方法.

现在我用的是

mcrypt_encrypt(MCRYPT_RIJNDAEL_128, md5($key, true), $string, MCRYPT_MODE_CBC, $iv)

我需要你的意见来加密密码的最好的/最强的方式,加密的密码当然应该被PHP 7.xx支持,而且也应该是可解密的,因为我的客户确实希望有一个选项来"恢复"他们的密码,而不生成新的密码.

推荐答案

最佳做法是对密码进行散列,使其不可解密.这使得可能已获得对您的数据库或文件的访问权限的攻击者的操作变得稍微困难一些.

如果您必须加密数据并使其可解密,请参阅https://paragonie.com/white-paper/2015-secure-php-data-encryption处的安全加密/解密指南.总结一下这种联系:

  • 使用Libsodium-一个PHP扩展
  • 如果你不能使用LibNade,那就使用defuse/php-encryption个纯PHP代码
  • 如果你不能使用libNa或defuse/php加密,可以使用OpenSSL-很多服务器都已经安装了这个.如果没有,可以用--with-openssl[=DIR]编译

Php相关问答推荐

在WooCommerce中处理客户总支出中的退款

SQLSTATE [42S02]:找不到基表或视图:1146 Table eshop. sessions不存在'''

PHP cUrl扩展与v8.2.12更新损坏

有什么方法可以阻止WordPress主题升级通知吗?

在内部API请求之后,在响应客户端之前,是否忘记了PHP中的Header()?

无法在WooCommerce中发送客户笔记邮箱通知

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

PHP测试字符串的所有POST值

如何在PHP中出现弃用警告时触发错误?

如何按类别过滤自定义帖子类型

$this->;db->;update();CodIgnitor中的功能不工作

使用帖子 ID 更新 wp 帖子

根据页面以及是否在促销,向 WooCommerce 中显示的价格添加前缀

Google Drive API 服务->文件->get('root') 失败并显示找不到文件. (范围问题?)

如何在 Phpunit 的静态提供程序中创建测试双打?

使用用户元数据填写 woocommerce checkout 字段

为什么 8.0 之前的 PHP 版本拒绝命名空间Random\Namespace作为无效语法?

为什么 ECDSA 384 签名验证在 GO 中失败,但在 PHP 中却没有?

转发和非转发呼叫 - 后期静态绑定

Symfony 在将它传递给 Twig 时是否从数据库中获取整个对象?