我有一个遗留密码数据库,使用MD5进行盐值加密。我希望更新系统以提高数据安全性。
第一种选择是在用户登录时过渡到新的哈希方案(Salt + Scrypt或PBKDF2 HMACSHA256),并在一定时间内停用旧用户,以便他们必须使用密码恢复功能自动更新其哈希。
另一种选项是让我立即升级所有人,即对现有的MD5哈希添加新的随机盐值,然后使用新的哈希方案(Salt + Scrypt或PBKDF2 HMACSHA256)对结果进行哈希,并将该值存储到数据库中并删除旧值。
然后当用户登录时,我需要应用旧方法和新方法。我更喜欢第二种选项,因为它可以让我尽快从数据库中删除所有旧的不安全哈希。
重新盐化和重新哈希现有哈希值是否安全? MD5是否如此破解,以至于我可以运行脚本来解密密码并使用新方案重新哈希?
或者也许最好的解决方案是两种选择的组合?这样我就不必在数据库中保留现有的MD5哈希,同时可以将用户迁移到新系统一段时间?
第一种选择是在用户登录时过渡到新的哈希方案(Salt + Scrypt或PBKDF2 HMACSHA256),并在一定时间内停用旧用户,以便他们必须使用密码恢复功能自动更新其哈希。
另一种选项是让我立即升级所有人,即对现有的MD5哈希添加新的随机盐值,然后使用新的哈希方案(Salt + Scrypt或PBKDF2 HMACSHA256)对结果进行哈希,并将该值存储到数据库中并删除旧值。
然后当用户登录时,我需要应用旧方法和新方法。我更喜欢第二种选项,因为它可以让我尽快从数据库中删除所有旧的不安全哈希。
重新盐化和重新哈希现有哈希值是否安全? MD5是否如此破解,以至于我可以运行脚本来解密密码并使用新方案重新哈希?
或者也许最好的解决方案是两种选择的组合?这样我就不必在数据库中保留现有的MD5哈希,同时可以将用户迁移到新系统一段时间?