Cakephp 3.0 alpha2如何比较新密码和旧密码?

Cakephp 3.0 alpha2如何比较新密码和旧密码?,php,cakephp,authentication,passwords,Php,Cakephp,Authentication,Passwords,好的,我正在通过将我的应用程序(2.5)传输到3.x来测试CakePHP3.0 alpha2。我当前的应用程序设置了密码,因此当您重置密码时,出于安全目的,您无法将其更改为前六个密码中的任何一个(存储在通过用户_id连接它的密码表中)。当我查看Cake 3.0中的更改时,我注意到,如果创建一个新实体,即使是相同的密码,密码散列也会不同。比较新密码和旧密码的好方法是什么?我会继续使用名为check的密码哈希器内置函数吗?CakePHP 3使用bcrypt。简而言之:bcrypt对每个密码使用不同的

好的,我正在通过将我的应用程序(2.5)传输到3.x来测试CakePHP3.0 alpha2。我当前的应用程序设置了密码,因此当您重置密码时,出于安全目的,您无法将其更改为前六个密码中的任何一个(存储在通过用户_id连接它的密码表中)。当我查看Cake 3.0中的更改时,我注意到,如果创建一个新实体,即使是相同的密码,密码散列也会不同。比较新密码和旧密码的好方法是什么?我会继续使用名为check的密码哈希器内置函数吗?

CakePHP 3使用bcrypt。简而言之:bcrypt对每个密码使用不同的salt,并将salt存储为密码哈希的一部分。这就是为什么,正如您所发现的,每次加密相同的纯文本密码时,bcrypt都会生成不同的哈希

但是,如果要用作身份验证系统,您必须能够检查纯文本密码是否适合该密码的给定哈希版本,即使没有一个“正确”的哈希版本,对吗?对

您可以使用
password\u verify
方法执行此操作-

因此,与其对纯文本版本进行散列,查看新密码的散列版本是否与过去6个版本中每个版本的散列版本匹配,不如对纯文本密码调用
password\u verify
,6次-对之前的每个散列密码调用一次,以查看是否存在匹配


这里有一个很好的php中bcrypt的解释:我建议您阅读这篇文章——一旦您了解bcrypt如何处理密码,您的问题应该不会太难解决。

CakePHP 3使用bcrypt。简而言之:bcrypt对每个密码使用不同的salt,并将salt存储为密码哈希的一部分。这就是为什么,正如您所发现的,每次加密相同的纯文本密码时,bcrypt都会生成不同的哈希

但是,如果要用作身份验证系统,您必须能够检查纯文本密码是否适合该密码的给定哈希版本,即使没有一个“正确”的哈希版本,对吗?对

您可以使用
password\u verify
方法执行此操作-

因此,与其对纯文本版本进行散列,查看新密码的散列版本是否与过去6个版本中每个版本的散列版本匹配,不如对纯文本密码调用
password\u verify
,6次-对之前的每个散列密码调用一次,以查看是否存在匹配

这里有一个关于php中bcrypt的很好的解释:我建议您阅读它——一旦您了解bcrypt是如何处理密码的,您的问题应该不会太难解决