Как мне повторно хешировать и хранить пароли из 4 таблиц в моей базе данных, используя .NET, EF? Я привык писать сценарии при миграции, но теперь мне приходится использовать код шифрования C#, а не только SQL.
Резюме
- показывает предупреждение, поскольку по умолчанию используется слабый SHA-1.
Код: Выделить всё
new Rfc2898DeriveBytes(passBytes, saltBytes, 32768) - Я обновляю алгоритм до SHA-256:
Код: Выделить всё
public string Encrypt(string input) {
...
new Rfc2898DeriveBytes(passBytes, saltBytes, 32768, HashAlgorithmName.SHA256),
...
}
- В качестве решения я создал пустую миграцию:
Код: Выделить всё
public partial class Test : Migration
{
///
protected override void Up(MigrationBuilder migrationBuilder)
{
var myEncryptor = new SymmetricEncryption();
// Script or Context get all hashed passwords from 4 tables
// myEncryptor.Decrypt(option: SHA-1) - decrypt old hashed password made with SHA-1
// myEncryptor.Encrypt(option: SHA-256) - encrypt with new SHA-256
// Script or Context to store back
}
///
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
- Проблемы с тестом класса:
Мне нужны хешированные пароли базы данных , но в этом случае я не могу использовать сценарии с кодом SQL для обработки данных. Кроме того, мне кажется, что создание контекста базы данных в классе Test может быть ошибкой. - если класс SymmetricEncryption меняется со временем. Сохранится ли это решение во времени?
Подробнее здесь: https://stackoverflow.com/questions/791 ... yframework
Мобильная версия