Если возможно, используйте 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.