Повторно хешировать пароль из базы данных в Entity FrameworkC#

Место общения программистов C#
Anonymous
Повторно хешировать пароль из базы данных в Entity Framework

Сообщение Anonymous »

Я узнал, что использую HashAlgorithmName.SHA1 для шифрования своих паролей, и хочу использовать HashAlgorithmName.SHA256.
Как мне повторно хешировать и хранить пароли из 4 таблиц в моей базе данных, используя .NET и EF? Я привык писать сценарии при миграции, но теперь мне приходится использовать код шифрования C#, а не только SQL.
Резюме

Код: Выделить всё

new Rfc2898DeriveBytes(passBytes, saltBytes, 32768)
показывает предупреждение, поскольку по умолчанию используется слабый SHA-1.
Я обновляю алгоритм до 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)
{
}
}
Проблемы с классом Test:
  • Мне нужны хешированные пароли базы данных, но я в этом случае невозможно использовать сценарии с кодом SQL для обработки данных. Кроме того, мне кажется, что создание контекста базы данных в классе Test может быть ошибкой.
  • если класс SymmetricEncryption меняется со временем. Сохранится ли это решение во времени?
  • Является ли это жизнеспособным решением? Вы бы реализовали это лучше?


Подробнее здесь: https://stackoverflow.com/questions/791 ... -framework

Вернуться в «C#»