是否有一种cakePHP双向加密方法可以产生“清晰”的输出?

是否有一种cakePHP双向加密方法可以产生“清晰”的输出?,cakephp,Cakephp,你好吗 我正在用cakePHP编写一个忘记密码函数。用户密码被散列到数据库中,因此我必须让用户选择一个新密码 视图中的表单要求输入两个值:电子邮件和新密码。该函数检查电子邮件是否存在,然后发送一封带有确认链接的电子邮件,该链接如下所示: 用户单击该链接后,该函数将检查参数USERID和PASSWORD是否与其哈希版本匹配 问题是密码在传输时没有加密纯文本,我不喜欢它,所以我不想对该参数应用双向加密,从而产生类似于UUID的输出 我知道Security::cipher函数,但它创建了不可辨认的字符

你好吗

我正在用cakePHP编写一个忘记密码函数。用户密码被散列到数据库中,因此我必须让用户选择一个新密码

视图中的表单要求输入两个值:电子邮件和新密码。该函数检查电子邮件是否存在,然后发送一封带有确认链接的电子邮件,该链接如下所示:

用户单击该链接后,该函数将检查参数USERID和PASSWORD是否与其哈希版本匹配

问题是密码在传输时没有加密纯文本,我不喜欢它,所以我不想对该参数应用双向加密,从而产生类似于UUID的输出

我知道Security::cipher函数,但它创建了不可辨认的字符,例如�I3:对于原始1234

四舍五入:

是否有一种cakePHP内置方法允许我将文本加密为类似UUID的内容,如FBBD4D1E-B46C-0418-15793119526DB242 FBBD4D1F-F56E-0D13-39730810BCEB0CD3,但我可以稍后解密


提前谢谢

为什么需要包含纯文本密码?您已经包含了散列密码,因此只需将其与数据库中存储的散列密码进行比较。

答案是在它生成的难以辨认的输出中添加一个base_64编码。噢。

你好,约瑟夫,你好吗?这是行不通的,因为我想更改密码,用户必须确认,在用户输入他的电子邮件地址并点击链接之前,我无法更改密码。因此,数据库中存储的密码不是新的,而是旧的,他记不起来的,呵呵。你能不能不包括新密码和旧密码的散列。将旧密码哈希与数据库中的密码哈希进行比较,然后插入新密码哈希?也许我误解了你…也许我没有解释我自己这个场景是:用户忘记了密码,所以他进入忘记部分,输入他的电子邮件地址和一个新密码,这个密码不会存储在任何地方。为了验证请求新密码的用户实际上是电子邮件地址的所有者,我发送了一个确认链接。。。此确认链接必须将用户选择的密码发回给我,因为它没有存储在任何位置。我无法将其存储在数据库中,因为我不知道它是有效的请求还是恶意用户。所以,我想加密我发送回来的密码。当然,它必须是双向加密,因为我必须准确地知道用户选择了哪个新密码!顺便说一句,谢谢你的关注。啊,我明白了。在这种情况下,您希望将新的哈希密码与GUID一起临时存储在表中的某个位置,然后将GUID放入电子邮件中。当用户单击链接look时,您可以获得带有GUID的密码。确保经常清除临时密码表,例如每12小时一次。