由于安全原因,我需要了解我们是否不在我们的数据库中存储实际密码。我们通常存储单向加密密码。现在,如果这是真的,我们不想更改密码,一些知名网站如何发现新密码非常接近或部分匹配旧密码,他们会提示我们更改密码。要做到这一点,他们必须在某处存储旧密码或双向加密密码,这可以再次解密。
答案 0 :(得分:1)
有两种可能性:
例如,如果您输入新密码为"密码7",则该网站可能会进行多项检查,例如:
password_hash( "password0", old_salt ) == value stored in database?
password_hash( "password1", old_salt ) == value stored in database?
password_hash( "password2", old_salt ) == value stored in database?
password_hash( "password3", old_salt ) == value stored in database?
password_hash( "password4", old_salt ) == value stored in database?
password_hash( "password5", old_salt ) == value stored in database?
password_hash( "password6", old_salt ) == value stored in database?
password_hash( "password7", old_salt ) == value stored in database?
password_hash( "password8", old_salt ) == value stored in database?
password_hash( "password9", old_salt ) == value stored in database?
如果他们使用正确的密码哈希算法(例如bcrypt或scrypt),这将非常非常慢,但如果在某些实现中实际完成,我不会感到惊讶。
当然,还有第三种可能性,这个愚蠢的网站从来没有打过你的密码!