Должен ли я шифровать и расшифровать прямо в классе Mapper? [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Должен ли я шифровать и расшифровать прямо в классе Mapper? [закрыто]

Сообщение Anonymous »

Я работаю над личным проектом Winforms, который следует за традиционной трехслойной архитектурой (презентация, бизнес, DataCcess). Система использует AES для шифрования и расшифровки конфиденциальных данных.

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

namespace ProjectName.DataAccess.Entities;

public class Employee
{
private int _employeeId;
private byte[]? _taxCode;

// other properties ...

public required int EmployeeId
{
get => _employeeId;
set => _employeeId = value;
}

public required byte[]? TaxCode
{
get => _taxCode;
set => _taxCode = value;
}
}
hookseeedto (подвергается пользовательскому интерфейсу, налоговому коду как простая строка)

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

using System.ComponentModel;

namespace ProjectName.DTOs;

public class EmployeeDto
{
private int _employeeId;
private string? _taxCode;

// other properties ...

public int EmployeeId
{
get => _employeeId;
set => _employeeId = value;
}

public string? TaxCode
{
get => _taxCode;
set => _taxCode = value;
}
}
employeeemapper

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

using ProjectName.DataAccess.Entities;
using ProjectName.DTOs;

namespace ProjectName.Business.Mappings;

static class EmployeeMapper
{
public static EmployeeDto ToDto(this Employee entity)
{
return new EmployeeDto()
{
EmployeeId = entity.EmployeeId,
// I intend to put a decrypt method directly here.
// For example: TaxCode = AesHelper.Decrypt(entity.TaxCode)
TaxCode = entity.TaxCode,
// other properties ...
};
}
}
aeshelper (псевдо -код)

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

static class AesHelper
{
public static string Decrypt(byte[] cipherText)
{
return /* data decrypted */;
}
}
Мой текущий код выглядит следующим образом:
employeeebusiness

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

namespace ProjectName.Business;

public class EmployeeBusiness
{
public EmployeeDto? GetEmployeeByEmployeeId(int employeeID)
{
Employee? employee = EmployeeDataAccess
.Instance
.GetEmployeeByEmployeeId(employeeID);
// I'm using ProjectName.Business.Mappings.EmployeeMapper here
return employee?.ToDto();
}
}
rayEedataAccess

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

namespace ProjectName.DataAccess;

public class EmployeeDataAccess
{
public Employee? GetEmployeeByEmployeeId(int employeeId)
{
string query = @"
SELECT EmployeeId
, TaxCode
-- other columns
FROM Employee
WHERE EmployeeId = u/EmployeeId
";
List parameters = [];
parameters.Add("EmployeeId", SqlDbType.Int, employeeId);

DataTable dataTable = DataProvider.Instance.ExecuteQuery(
query,
[.. parameters]
);
if (dataTable.Rows.Count == 0)
{
return null;
}

DataRow row = dataTable.Rows[0];
// this is another mapper in ProjectName.DataAccess.Mappings
// that maps from DataRow -> Entities.Employee
return EmployeeMapper.FromDataRow(row);
}
}
Мой вопрос:

Куда мне положить логику шифрования/дешифрования? /> CHATGPT предложил: «Создайте новый класс Mapper (возможно, employeMappingService ), чтобы обрабатывать как отображение, так и шифрование/дешифрование». Но я не чувствую, что действительно необходимо добавить еще один класс только для этого. < /P>
Каково ваше мнение? Как вы обычно обрабатываете картирование DTO при зашифрованных полях?

Подробнее здесь: https://stackoverflow.com/questions/797 ... pper-class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Должен ли я шифровать и расшифровать прямо в классе Mapper? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Исключение Mapper Mapper Jackson с метадаными `$ Schema` в JSON
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Исключение Mapper Mapper Jackson с метадаными `$ Schema` в JSON
    Anonymous » » в форуме JAVA
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Исключение Mapper Mapper Jackson с метадаными `$ Schema` в JSON
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • JsonParseException, когда анализируя двойные кавычки в строке Java с использованием Mapper Object Mapper
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

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