【发布时间】:2013-03-24 08:32:20
【问题描述】:
我有一个使用 MD5 加盐和散列的旧密码数据库。我想更新系统,让数据更安全。
第一个选项是当用户登录并在一段时间后停用旧用户时将用户转换为新的哈希方案(Salt + Scrypt 或 PBKDF2 HMACSHA256),因此他们必须使用会自动更新的密码恢复功能他们的哈希。
另一个可以让我立即升级每个人的选项是采用现有的 MD5 哈希值,为每个哈希值添加一个新的随机盐值,然后使用新的哈希方案(Salt + Scrypt 或 PBKDF2 HMACSHA256)对结果进行哈希处理,然后将该值存储到数据库中并删除旧值。
然后当用户登录时,我必须先应用旧方法,然后再应用新方法。我更喜欢第二个选项,因为它允许我尽早从数据库中删除所有旧的不安全哈希。
对现有哈希进行加盐和重新哈希是否安全? MD5 是否如此损坏,以至于我可以运行一个脚本来对密码进行去散列并使用新方案对其进行重新散列?
或者最好的解决方案是结合使用这两个选项?这样我就不必将现有的 MD5 哈希值保留在数据库中,并且可以在一段时间内将用户迁移到新系统?
【问题讨论】:
-
Use SHA-512 and salt to hash an MD5 hashed password? 的可能副本。 (不完全相同,但大多数答案听起来也适用于此。)
-
刚刚发现一个...最重要的方面是尽快删除/保护当前数据。
标签: security md5 password-encryption pbkdf2 scrypt