我已经使用生成的密码一段时间了。我生成一个盐,然后输入一些信息,然后生成一些返回值。在一个大型银行网站上,我使用了这样的密码模式,最近发现我无法登录。显然他们将密码长度从 32 个字符缩短到了 31 个字符,现在是 30 个字符。
我的问题是,如果他们截断了密码,那么他们唯一能够正确截断密码的方法就是他们没有通过单向哈希算法来安全地存储密码。这意味着他们要么以纯文本形式存储密码,要么使用弱模式对密码进行编码。
由于明显的安全原因以及对明显的安全措施的普遍疏忽,我正在考虑取消我的帐户。
我的假设是否错误,我既不是数学专业的,也不是计算机科学专业的。
沃尔特
答案1
您是否可以通过简单地从密码中删除一个字符来登录,还是必须更改密码?
如果答案是肯定的,我认为他们很可能将其存储为纯文本或弱加密。
如果答案是否定的,他们只是改变了政策——你的政策不再匹配,并且不再起作用......
但是,特别是如果你对不同的网站使用不同的密码,我不会因为这个而费心去更改密码——如果它们被黑客入侵或发生类似情况,他们不会因此而责怪你……但是,听起来你对安全非常谨慎,所以更改密码可能是让你感到安全的唯一方法!
答案2
他们可能没有在数据库中截断您的密码,而可能是在检查字符串长度之前进行预提交检查。
但是,如果您能够通过输入前 31 个(或 30 个)字符进入,那么它必须以明文形式存储。
答案3
如果是一家大型美国银行,我几乎可以保证它是“安全”存储的,因为银行有法律和法规......然而,这实际上并没有多大意义。
了解网站是否以明文形式存储密码的最简单方法是查看其密码恢复/重置情况。如果网站可以将密码发回给您,则密码要么以明文形式存储,要么未使用单向哈希。如果他们让您重置密码或使用临时密码重置密码,则很可能使用哈希。
如上所述,文本框很可能将字符串截断为 30 个字符,或者哈希算法在哈希之前将其截断。有时开发人员会做一些愚蠢的事情,例如将密码字段设置为只有 30 个字符,因为谁的密码会比这个长?=P
附注:如果您觉得您的银行不安全或不值得信任,请转到您觉得放心的银行。我建议这样做,因为您可能永远都找不到答案。