LGPD.Redact.Core
1.2.0
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
<PackageReference Include="LGPD.Redact.Core" Version="1.2.0" />
<PackageVersion Include="LGPD.Redact.Core" Version="1.2.0" />
<PackageReference Include="LGPD.Redact.Core" />
paket add LGPD.Redact.Core --version 1.2.0
#r "nuget: LGPD.Redact.Core, 1.2.0"
#:package LGPD.Redact.Core@1.2.0
#addin nuget:?package=LGPD.Redact.Core&version=1.2.0
#tool nuget:?package=LGPD.Redact.Core&version=1.2.0
LGPD.Redact
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 | Versions 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. |
-
net10.0
- Microsoft.Extensions.Compliance.Redaction (>= 10.4.0)
-
net8.0
- Microsoft.Extensions.Compliance.Redaction (>= 8.10.0)
-
net9.0
- Microsoft.Extensions.Compliance.Redaction (>= 9.10.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.