LGPD.Redact.Core 1.2.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package LGPD.Redact.Core --version 1.2.0
                    
NuGet\Install-Package LGPD.Redact.Core -Version 1.2.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LGPD.Redact.Core" Version="1.2.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LGPD.Redact.Core" Version="1.2.0" />
                    
Directory.Packages.props
<PackageReference Include="LGPD.Redact.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LGPD.Redact.Core --version 1.2.0
                    
#r "nuget: LGPD.Redact.Core, 1.2.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LGPD.Redact.Core@1.2.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LGPD.Redact.Core&version=1.2.0
                    
Install as a Cake Addin
#tool nuget:?package=LGPD.Redact.Core&version=1.2.0
                    
Install as a Cake Tool

LGPD.Redact

NuGet Version License: MIT .NET 8.0+

LGPD.Redact é uma biblioteca de alta performance para redação (mascaramento) de dados sensíveis (PII) em conformidade com a LGPD. Construída sobre o framework oficial de conformidade da Microsoft, ela utiliza Span<char> para garantir alocação zero e máxima velocidade durante o processamento de logs e telemetria.


Instalação

dotnet add package LGPD.Redact.Core

Registre os servicos no DI com AddLGPDRedaction():

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddLGPDRedaction();
builder.Logging.EnableRedaction(options => options.ApplyDiscriminator = false);

Importante: O nome do parâmetro do método deve corresponder exatamente ao nome do placeholder na mensagem do [LoggerMessage]. O source generator do Microsoft.Extensions.Logging valida essa correspondência em tempo de build.

// ✅ Correto - nomes correspondentes
[LoggerMessage(Message = "Meu nome é {Nome}")]
public static partial void LogNome(this ILogger logger, [NomeData] string nome);

// ❌ Erro de build - nomes não correspondentes
[LoggerMessage(Message = "Meu nome é {PessoaNome}")]
public static partial void LogNome(this ILogger logger, [NomeData] string nome);

Atributos Suportados

Atributo O que faz? Exemplo Original Exemplo Redigido
[CPFData] Preserva 3 primeiros e 2 ultimos digitos 123.456.789-01 123.***.***-01
[CNPJData] Preserva raiz (2 caracteres) e radical (6 ultimos) 12.345.678/0001-90 12.***.***/0001-90
    AB.CDE.FGH/0001-90 AB.***.***/0001-90
[EmailData] Preserva inicial e dominio felipe.siqueira@gmail.com f**************@gmail.com
[TelefoneData] Preserva DDD, 1 digito apos DDD e 4 ultimos (11) 98888-4444 (11) 9****-4444
[CEPData] Mascara os 3 ultimos digitos 01310-900 01310-***
[NomeData] Mantem apenas as iniciais de cada palavra Maria da Silva M**** d* S****
[EnderecoData] Mantem apenas as iniciais, oculta numeros Avenida Paulista, 1000 A****** P*******, ****
[GuidData] Mascara GUID mantendo 4 primeiros e 4 ultimos hex digitos e8d26618-2e11-4b22-8d26-66182e114b22 e8d2****-****-****-****-*******4b22
[PixData] Mascara chave aleatoria mantendo 4 primeiros e 8 ultimos e8d26618-2e11-4b22-8d26-66182e114b22 e8d2****-****-****-****-****2e114b22
[CartaoCreditoData] Preserva 4 primeiros e 4 ultimos digitos 4532 1178 9012 3456 4532 **** **** 3456
[EnderecoIPData] Mascara os 2 ultimos octetos (IPv4) e os ultimos 3 grupos (IPv6) 192.168.1.100 192.168.*.***
    2001:0db8:85a3:0000:0000:8a2e:0370:7334 2001:0db8:85a3:0000:0000:****:****:****
[MacAddressData] Preserva prefixo OUI (3 primeiros bytes) 00:1A:2B:3C:4D:5E 00:1A:2B:**:**:**
[GeolocalizacaoData] Mascara parte decimal de latitude e longitude -23.5505, -46.6333 -23.****, -46.****
[CNHData] Preserva 3 primeiros e 2 ultimos digitos 12345678901 123******01
[TituloEleitorData] Preserva 4 primeiros e 4 ultimos digitos 1234.5678.9012 1234.****.9012
[PlacaData] Mascara numeros (padrao antigo) e caracteres apos prefixo (Mercosul) ABC-1234 ABC-****
    ABC1D23 ABC****
[RenavamData] Preserva 3 primeiros e 3 ultimos digitos 12345678901 123*****901
[PISData] Preserva 3 primeiros e digito verificador 123.45678.90-1 123.*****.**-1
    12345678901 123*******1
[CNSData] Preserva 3 primeiros e 4 ultimos 123 4567 8901 2345 123 **** **** 2345
    123456789012345 123********2345
[CTPSData] Preserva 3 primeiros e 3 ultimos 1234567890 123****890
[CertidaoData] Preserva 6 primeiros e 2 verificadores 123456.78.1234.5.6.7890.1.12345-67 123456.**.****.*.*.****.*.*****-67
[DataGenericaData] Preserva ano, mascara dia/mes 15/03/1990 **/**/1990
    1990-03-15 1990-**-**
[ContaBancariaData] Preserva operacao e digito, mascara conta 013.123456-7 013.******-7
    12345-6 *****-6
[PassaporteData] Preserva prefixo letras e 2 ultimos digitos AB123456 AB****56
    123456789 *******89
[RNEData] Preserva letra prefixo e digito verificador V1234567-8 V*******-8

Uso com ILGPDRedactService

Injete ILGPDRedactService e utilize o enum DadoPessoal para redigir valores avulsos sem precisar lidar com DataClassification:

public class MeuServico
{
    private readonly ILGPDRedactService _redact;

    public MeuServico(ILGPDRedactService redact) => _redact = redact;

    public void Executar()
    {
        string cpf = _redact.Redact(DadoPessoal.CPF, "123.456.789-09");
        string email = _redact.Redact(DadoPessoal.Email, "usuario@example.com");
    }
}

Enum DadoPessoal

Cada valor do enum mapeia para um tipo de dado pessoal:

Valor Descricao
CPF Cadastro de Pessoas Físicas
CNPJ Cadastro Nacional da Pessoa Jurídica
Nome Nome completo
Endereco Endereco completo
Telefone Telefone fixo ou celular
Email Endereco de e-mail
CartaoCredito Número do cartão de crédito
CEP Código de Enderecamento Postal
Guid Identificador GUID/UUID
Pix Chave aleatória Pix
EnderecoIP Endereco IPv4 ou IPv6
MacAddress Endereco MAC
Geolocalizacao Coordenadas de latitude e longitude
CNH Carteira Nacional de Habilitacao
TituloEleitor Titulo de Eleitor
Placa Placa de veiculo (antiga ou Mercosul)
Renavam Renavam do veiculo
PIS PIS/PASEP/NIT
CNS Cartao Nacional de Saude (SUS)
CTPS Carteira de Trabalho
Certidao Certidao de nascimento/casamento/obito (CNJ)
DataGenerica Data no formato brasileiro ou ISO
ContaBancaria Conta bancaria (operacao + conta + digito)
Passaporte Passaporte (nacional ou estrangeiro)
RNE Registro Nacional de Estrangeiros / RNM

Licenca

Distribuido sob a licenca MIT.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.0 157 5/21/2026 1.3.0 is deprecated because it is no longer maintained.
1.2.0 124 5/19/2026
1.1.0 120 5/15/2026
1.0.0 133 5/15/2026