我见过很多将密码长度限制为 10 或 12 个字符的网站。我知道这可能表明他们以纯文本形式存储密码并且他们限制长度,因为他们认为这样可以节省空间,但是如果他们将密码存储为哈希,那么这个限制有什么好处吗?
编辑:我很清楚更长的密码更强,并且散列是散列,无论输入如何,长度都是相同的。我真正的问题是,系统设计人员是否有某种令人费解的理由来合理化这种固有的不安全做法?
散列函数接受未指定长度的输入,并返回指定长度的值。所以不,输入的长度对输出的长度没有影响,因为对于给定的哈希函数,输出的长度总是相同的。
设置用户可以使用的密码长度的下限只是为了鼓励用户使用更强的密码。上限,我不能说。可能是针对垃圾邮件机器人的东西,或者出于性能原因,他们不想破解 200 个字符的密码。
没有人以明文形式存储密码。
要直接回答您的问题,不,故意实施较低的最大长度没有任何好处。您会发现,当存在遗留依赖项时,通常会发生这种情况;您的密码只能是 10 个字符长,因为它是后端到实现此限制的系统。
我怀疑在Tesco等场景中就是这种情况。您拥有 13 年以上的系统,正如您所说,它(据称)以明文形式存储密码,并且可能在多个点实现了 10 个聊天限制(DB col、SQL 命令参数等)。
我能想到的唯一原因——而且有点牵强——是没有限制的文本框可以允许超过最大请求长度,但我们在这里谈论的密码太长了。
不。如果他们以纯文本形式存储它,那么在现实生活中也没有多大优势。