【问题标题】:Display MD5 hashed passwords as asterisked text将 MD5 散列密码显示为带星号的文本
【发布时间】:2012-07-07 22:04:27
【问题描述】:

我想echo 用户的帐户详细信息,这对于纯文本很好,但我在数据库中有 md5 散列密码。我想用星号显示密码,所以唯一的变量是密码的长度。因此,如果某人的密码是cat,它将显示:密码:***,如果其他人的密码是hippopotamus,它将显示 显示:密码:************ 但是使用密码加密这似乎很困难。虽然 eBay 和 Facebook 等网站确实有此功能,但它们必须对用户密码进行加密。

谁能解释这个问题。谢谢

【问题讨论】:

    标签: php


    【解决方案1】:

    这是不可能的。没有办法知道用于生成 md5 哈希的输入数据的长度。

    像 ebay 和 facebook 这样的网站确实有这个,他们必须加密用户密码

    如果他们这样做了(我希望他们不要这样做,因为这会将有关密码的数据泄露给公众,从而更容易破解),那么他们将不得不存储输入字符串的长度以及哈希密码。

    您看到的可能是浏览器自动为您填写密码字段。星号是(浏览器)使用的标准掩码字符,用于降低“偷窥”攻击的有效性。

    【讨论】:

    • 那么其他网站是怎么做的,他们不加密密码吗?
    • @user1482784 希望没有网站加密密码,绝对没有理由为登录目的加密用户密码。加密密码的唯一原因是您的应用程序需要使用它来访问另一个服务并且您拥有用户的权限。这是不安全的,为了再次强调 Quentin 所说的,显示用户密码的长度是安全漏洞。如果有人对我的密码这样做,我将不胜感激。
    • @user1482784 如果一个站点显示一个密码字段填充了非数据,那么在时间流逝的约定中,您将显示 8 个字符。如果您看到的字符串实际上显示了正确的密码长度,则可能是浏览器正在从它自己的密码管理器中填充该字段,并且如果您检查了源 HTML,您会发现关联的 <input> 会丢失或空value= 属性。
    • 你说得对,它只是一个标准的 8 *,我的密码也是 8 只是巧合,所以我认为它知道,谢谢你清除 DaveRandom,你为我节省了很多不必要的编码:)
    【解决方案2】:

    您可以在最初对密码进行哈希/加盐时将密码的长度存储在数据库中。 但是散列/加盐的重点是防止数据库被盗时密码被泄露。如果数据库被盗,知道密码的长度是一个很大的安全隐患。

    【讨论】:

    • 是的,我认为你是对的,最好不要冒险。谢谢
    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 2012-06-15
    • 2021-02-03
    • 1970-01-01
    • 2016-11-03
    • 2011-04-28
    相关资源
    最近更新 更多