我有一个未添加盐值就被哈希的密码数据库。我想给新密码添加盐值。显然,无法在现有的密码上重新进行哈希处理。
您会如何迁移到新的哈希系统?
我有一个未添加盐值就被哈希的密码数据库。我想给新密码添加盐值。显然,无法在现有的密码上重新进行哈希处理。
您会如何迁移到新的哈希系统?
hash = MD5 (MD5 (password) . salt)
这是完全相同的方法,除了使用了不同的哈希函数。
作为一个快速解决方案,您可以在数据库中创建一个salt列,在用户正确匹配旧哈希值时,您可以使用他们输入的密码和salt创建一个新的哈希值。
我曾经处理过一个涉及多种哈希技术的类似问题。我采用了在数据库中编码哈希方法类型的方法(例如“alpha”,“beta”,“gamma”,“delta”)。我标记了所有当前哈希值的适当级别。当用户登录时,我验证他们的密码并使用更新后的方法重新哈希它们。我们的密码在90天后过期,所以只需要坚持3个月,直到所有使用旧方法的密码都可以重置。
我存储盐的最佳方式是将盐值嵌入到我刚创建的密码哈希+盐中。我不会将盐字符串附加到哈希的开头或结尾,而是将盐直接嵌入到哈希中。
这里有一些方法可能适用于您。
记住,任何添加到现有哈希中的恒定模式都是无用的(该链接上的一个技巧建议采用此类方法)。不应存在可用于隔离盐的可识别模式。
当然,最好的方法是迁移到加盐哈希表。