重置新密码与旧密码匹配

时间:2016-09-23 11:41:48

标签: passwords md5 reset password-encryption

由于安全原因,我需要了解我们是否不在我们的数据库中存储实际密码。我们通常存储单向加密密码。现在,如果这是真的,我们不想更改密码,一些知名网站如何发现新密码非常接近或部分匹配旧密码,他们会提示我们更改密码。要做到这一点,他们必须在某处存储旧密码或双向加密密码,这可以再次解密。

1 个答案:

答案 0 :(得分:1)

有两种可能性:

  1. 通常,当您更改密码时,首先需要输入旧密码以确认您是您。该网站可以暂时将旧密码保存在内存中,以便将旧密码与新密码进行比较。
  2. 当您输入新密码时,可以检查对其进行简单修改的​​哈希值是否映射到旧密码的哈希值。
  3. 例如,如果您输入新密码为"密码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),这将非常非常慢,但如果在某些实现中实际完成,我不会感到惊讶。

    当然,还有第三种可能性,这个愚蠢的网站从来没有打过你的密码!