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

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

Сообщение Anonymous »

Я работаю над личным проектом Winforms, который следует за традиционной трехслойной архитектурой (презентация, бизнес, доступ к данным). Система использует AES для шифрования и расшифровки конфиденциальных данных. < /P>
Вот упрощенный пример: < /p>

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

Employee
(хранятся в DB, Tax -код зашифруется как byte [] )

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

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;
}
}
< /code>
EmployeeDto
(подвергается пользовательскому интерфейсу, Tax -код является простой строкой)

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

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;
}
}
< /code>
EmployeeMapper
:

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

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 ...
};
}
}
< /code>
AesHelper
(псевдо -код):

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

static class AesHelper
{
public static string Decrypt(byte[] cipherText)
{
return /* data decrypted */;
}
}
< /code>
My current code looks like this:
EmployeeBusiness
:

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

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();
}
}
< /code>
EmployeeDataAccess
:

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

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);
}
}
< /code>
My questions are:

[*]Where should I put the encryption/decryption logic?
If I put it directly inside the mapper (e.g., calling AesHelper.Decrypt
там), это делает Mapper излишне тяжелым? Но я не чувствую, что действительно необходимо добавить еще один класс только для этого. < /P>
Каково ваше мнение? Как вы обычно обрабатываете картирование DTO при зашифрованных полях?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Должен ли я шифровать и расшифровать прямо в классе Mapper? [закрыто]
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение 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#»