【问题标题】:PHP Crypt function issuePHP Crypt函数问题
【发布时间】:2015-09-01 08:40:34
【问题描述】:

我正在使用 crypt 函数将用户密码存储在数据库中。 原来的密码是自己加密的,和数据库里的密码核对一下(我知道这不是很好的做法,但目前的情况就是这样)。

问题是:

crypt('qixin26428968123', 'qixin26428968123') === crypt('qixin26428968', 'qixin26428968')

所以看起来如果例如密码是 123456 并且用户尝试使用 123456abcde 登录,则登录会成功,这意味着用户始终可以使用任意选择的密码登录系统,只要您的第一个“n”位是正确的。

这是一个已知问题吗?怎么解决,有没有指定crypt函数的选项?

谢谢。

【问题讨论】:

  • 您使用的是什么版本的 PHP?如果大于 5.0,请尝试使用推荐的 password_hash
  • @RiggsFolly,感谢您的评论。我使用的是 5.5,所以对于 password_hash 应该没问题。此外,如果与 crypt 兼容,我不需要更改我拥有的密码结构。

标签: php login crypt


【解决方案1】:

来自manual

标准的基于 DES 的 crypt() 将 salt 作为前两个返回 输出的字符。它也只使用前八个字符 str,所以以相同的八个字符开头的更长的字符串 将产生相同的结果(当使用相同的盐时)。

CRYPT_SHA512 使用 16 个字符

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 2014-07-01
    • 1970-01-01
    • 2010-09-25
    • 2013-06-04
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多