Как перейти с шифрования md5 на sha256 - PullRequest
0 голосов
/ 05 марта 2012

У меня есть база данных с тысячами зашифрованных паролей md5, и мне нужно перейти на sha256. Какой самый безопасный способ сделать это, сохранив старые пароли с доступом md5 и новый с шифрованием sha256? Спасибо.

Ответы [ 3 ]

5 голосов
/ 05 марта 2012

В качестве альтернативы созданию нового столбца для sha256 вы можете использовать существующий столбец для обоих. Поскольку хеши sha256 намного длиннее хешей md5, вы можете определить алгоритм хеширования, посмотрев на длину хеша.

2 голосов
/ 09 февраля 2013

Если возможно, используйте PBKDF2 или bcrypt.Обычный SHA-2 слишком быстрый.

Если вы не можете использовать ни один из них, то вам следует по крайней мере повторить SHA-256 пару тысяч раз, чтобы замедлить атаку по подбору пароля:

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

Помните, что каждый пользователь должен иметь различную соль, которая обычно хранится вместе с хэшем пароля.Соль для каждого приложения недостаточна.


Для обновления я бы использовал старый хеш в качестве входных данных для новой функции.Таким образом, существующие хэши получают большую часть повышения безопасности обновления, не требуя от пользователя входа в систему.Не храните старые хеши MD5.

Затем при первом входе каждого пользователя обновите его хеш до чистого нового хеша, который больше не использует MD5.

1 голос
/ 05 марта 2012

Я бы добавил новый столбец для хэша sha256. Таким образом, вы можете просто проверить новый столбец на null при входе в систему и сохранить новый хэш, когда у вас есть доступ к открытому текстовому паролю.

...