如何从md5迁移到sha256加密

时间:2012-03-05 18:34:20

标签: encryption md5 sha256

我有一个包含数千个md5加密密码的数据库,我需要迁移到sha256。通过使用md5访问保留旧密码和使用sha256加密的新密码,最安全的方法是什么?感谢。

3 个答案:

答案 0 :(得分:5)

除了为sha256创建新列之外,您还可以使用现有列。因为sha256哈希比md5哈希长得多,所以你可以通过查看哈希的长度来检测哈希算法。

答案 1 :(得分:2)

如果可能,请使用PBKDF2或bcrypt。普通的SHA-2太快了。

如果你不能使用它们中的任何一个,那么你应该至少迭代SHA-256几千次以减慢密码猜测攻击:

var hash = SHA256(SHA256(salt)+password)
for(int i=0; i<10000; i++)
   hash = SHA256(hash);
return hash;

请记住,每个用户都需要使用不同的salt,这通常与密码哈希一起存储。每次施用盐是不够的。


对于升级,我使用旧哈希作为新函数的输入。这样,现有哈希获得了升级的大部分安全性增加,而无需用户登录。不要保留旧的MD5哈希值。

然后在每个用户的第一次登录时,将其哈希值升级为不再使用MD5的干净新哈希值。

答案 2 :(得分:1)

我为sha256哈希添加了一个新列。这样,您可以在登录时检查新列是否为null,并在您有权访问明文密码时保存新哈希。