【问题标题】:CakePHP Username Encryption/DecryptionCakePHP 用户名加密/解密
【发布时间】:2013-12-13 05:14:42
【问题描述】:

在我的 CakePHP 应用程序中,我正在尝试加密存储的用户数据,这在很大程度上我已经成功完成了。我可以使用beforeSave()afterFind() 进行常规加密/解密,但是在加密/解密用户名时遇到问题 - 问题是 AuthComponent 在数据库中查找与输入的用户名完全匹配的问题。我在将用户名发送到 AuthComponent 之前对其进行了加密,但这不会做任何事情,因为我对字符串进行了加密(Security::rijndael 不会总是产生相同的结果(就像哈希一样)。

我一直在 lib 文件夹中的 AuthComponent 中四处寻找,但我犹豫是否要进行任何更改。所以我想我还有两个问题:

  1. 是否可以在数据库中加密用户名并让 Cake 读取它们? (我几乎可以肯定这是肯定的,所以......)
  2. 我应该怎么做?也许是一种行为?对 AuthComponent 的简单修改?

谢谢!

【问题讨论】:

    标签: php cakephp encryption


    【解决方案1】:

    根据你所说,我没有理由使用 AuthComponent,我只会使用 the Security Utility

    就像你已经说过的,如果你想在数据库中保存一个哈希而不是纯文本,那么你需要使用 beforeSave() 回调,你的哈希将使用Security::hash() 完成。

    请注意,根据定义,HASH 无法解密,这一点很重要。因此,如果您真正想要的是加密/解密,那么您将需要使用Security::cipher()

    【讨论】:

    • 谢谢,但我已经设置了加密和解密。我希望用户名是可恢复的,所以我使用加密而不是散列。当我添加一个新用户时,一切都被加密了。但我无法登录,因为 Cake 正在用户名列中寻找 一些加密字符串,这与原始加密不同。
    • 然后在登录用户之前修改用户名。如何?使用密码()。
    • 对不起,我在原帖中没有说清楚,我已经更新了。我正在使用Security::rijndael,它在给定相同字符串的情况下不会产生相同的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 2017-05-18
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多