Cepedi.DataEncryption
10.0.2
dotnet add package Cepedi.DataEncryption --version 10.0.2
NuGet\Install-Package Cepedi.DataEncryption -Version 10.0.2
<PackageReference Include="Cepedi.DataEncryption" Version="10.0.2" />
<PackageVersion Include="Cepedi.DataEncryption" Version="10.0.2" />
<PackageReference Include="Cepedi.DataEncryption" />
paket add Cepedi.DataEncryption --version 10.0.2
#r "nuget: Cepedi.DataEncryption, 10.0.2"
#:package Cepedi.DataEncryption@10.0.2
#addin nuget:?package=Cepedi.DataEncryption&version=10.0.2
#tool nuget:?package=Cepedi.DataEncryption&version=10.0.2
Cepedi.DataEncryption
O Cepedi.DataEncrypt é uma extensão para NPGSQL que oferece suporte às Funções de Criptografia Bruta (Raw Encryption Functions) nativas do PostgreSQL (especificamente encrypt_iv e decrypt_iv utilizando aes-cbc/pad:pkcs).
A principal vantagem desta biblioteca é permitir a execução de consultas de busca (search queries) diretamente em colunas criptografadas no banco de dados. Este recurso é essencial para sistemas que necessitam de conformidade com regulamentações de proteção de dados, como a LGPD ou GDPR.
⚠️ Nota de Segurança Crítica
Ao utilizar esta biblioteca, a SENHA BRUTA (RAW PASSWORD) de criptografia será transmitida através da rede. Portanto, é obrigatório que a conexão da sua aplicação com o serviço PostgreSQL utilize uma conexão criptografada. Você pode forçar isso na sua string de conexão:
{
"DefaultConnection": "Server=127.0.0.1;port=5432;user id=postgres;password=postgres;database=AESTester;pooling=true;Encoding=UTF8;SSL Mode=Require;Trust Server Certificate=true;"
}
Atente-se aos parâmetros SSL Mode=Require;Trust Server Certificate=true;.
Dependências e Compatibilidade
O Cepedi.DataEncrypt tem como alvo o net10.0. O pacote possui a seguinte dependência:
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.1" />
Versionamento: Utilize sempre a versão do pacote compatível com a versão do .NET do seu projeto.
Configuração
1. Instalação via NuGet:
Install-Package Cepedi.DataEncrypt
2. Configuração do DbContext:
No seu DbContext, configure a senha e a extensão do PostgreSQL:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
// Substitua "sua_senha" pela sua chave real
optionsBuilder.UseEncryptionFunctions("sua_senha", EncKeyLength.L128);
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Habilita a extensão pgcrypto no PostgreSQL
builder.HasPostgresExtension("pgcrypto");
builder.UseEncryptAttribute("sua_senha", EncKeyLength.L128);
}
Exemplos de Uso
Uso da Anotação Encrypted
Utilize o atributo para denotar que a propriedade deve ser criptografada no banco de dados:
public class TestModel
{
public string Id { get; set; } = Guid.NewGuid().ToString();
[Encrypted]
public string Name { get; set; }
}
Consultas de Busca (Search Query)
Este código converterá o LINQ em uma consulta SQL nativa que descriptografa a coluna antes de realizar a busca:
var searchTest = _dbContext.TModels
.Where(x => x.Name.NpgDecrypt().Contains("teste"))
.ToList();
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.