Как мне повторно хешировать и хранить пароли из 4 таблиц в моей базе данных, используя .NET и EF? Я привык писать сценарии при миграции, но теперь мне приходится использовать код шифрования C#, а не только SQL.
Резюме
Код: Выделить всё
new Rfc2898DeriveBytes(passBytes, saltBytes, 32768)Я обновляю алгоритм до SHA-256:
Код: Выделить всё
SymmetricEncryption.cs:
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 ... -framework