CakePHP 3:加密/解密密码

Kru*_*ave 0 cakephp-3.0

如何在编辑表单中显示解密的用户密码?

我使用DefaultPasswordHasherHashing密码,同时登记users使用此:

protected function _setPassword($password) {
  return (new DefaultPasswordHasher)->hash($password);
}
Run Code Online (Sandbox Code Playgroud)

它运作良好,密码加密......

但是,当我用user tableview pageedit page它显示了加密密码.那么如何在控制器中解密密码CakePHP 3.x呢?在编辑页面时它还解密并存储在数据库中?

Ale*_*len 10

简单的答案是:你做不到

散列的重点是您无法对密码进行反向工程.因此,当您的数据库被黑客入侵或泄露时,不会对密码造成任何伤害.

任何显示您自己密码的网站都存在严重的安全问题,我不会使用它.

显示加密密码也没有意义.不需要编辑密码,只需覆盖旧密码(当他们仍然可以提供旧密码时),如果您的某个用户忘记了自己的密码,您应该使用他们的电子邮件为他们提供恢复系统.

  • 再简单的回答:你做不到.解密正确的哈希密码是不可能的. (3认同)
  • @Vito,永远!您可以根据请求向用户发送新密码,也可以使用一次性令牌发送链接以自行更改密码.我不能强调任何向您发送或以任何方式向您显示您自己的密码的系统都会被破坏并且存在很大的安全问题. (2认同)