criptografia

Ol√° pessoal, meu nome √© Mauricio Junior e hoje eu vou falar de string de conex√£o criptografada. √Č muito importante para a sua aplica√ß√£o ter uma conex√£o criptografada porque com ela a pessoa pode acessar o seu banco de dados / database para pegar todos os dados.

Para quem ainda n√£o sabe, o banco de dados / database √© onde ficam as informa√ß√Ķes de cada sistema e o sistema apenas coloca de forma bonita para que o usu√°rio entenda, usando uma interface que chamamos de UI (User Interface).

O sistema pode ser tamb√©m respons√°vel por fazer alguns c√°lculos e a partir disso gravar no banco de dados. Pode tamb√©m gerar gr√°ficos e relat√≥rios com as informa√ß√Ķes do database. Tudo isso pode ser feito mas √© necess√°rio ter uma conex√£o entre o software e a fonte de dados.

A fonte de dados pode ser um database mas também pode ser um arquivo qualquer. O mais indicado é ter o banco de dados conectado.

Código

Para colocar isso em c√≥digo, criei um pacote respons√°vel por utilizar a criptografia de dados utilizando chave p√ļblica e chave privada. Eu disponibilizei esse pacote para ser utilizado gratuitamente pelos desenvolvedores e est√° dispon√≠vel no NuGet.

O nome do pacote √© CriptConnectionString-NET-6 criado em C# da Microsot com Visual Studio. √Č necess√°rio fazer download e incluir em seu projeto. Dentro do arquivo de configura√ß√£o utilizo uma criptografia boa, veja o c√≥digo 1.

{
  "ConnectionStrings": {
    "DefaultConnection": "52b+tYhuBkPc5PL1MCIcUkFZaXKVfsJNFq9AwfY14eokinkE...",	    
}

Código 1 - Connection String

Dentro da classe Program.cs eu utilizo o pacote com as minhas chaves. Veja o código 2.

//database
builder.Services.AddDbContext<SqlContext>(option =>
{
    var conn = new CriptConnectionString.Cripto()
        .DecryptAES(builder.Configuration.GetConnectionString("DefaultConnection"),
            "<public key>",
            "<private key>"); 
    
    option.UseSqlServer(conn);
});

Código 2 - Utilizando o DecryptAES com as chaves

O código 2 é responsável por pegar o dados criptografado e utilizando as chaves o código consegue pegar os dados corretos para conexão com o banco de dados.

Se eu utilizar mais uma opção dentro do AddDbContext o sistema pode mostrar todo tipo de interação com o banco de dados dentro do log. Código 3.

//database
builder.Services.AddDbContext<SqlContext>(option =>
{
    var conn = new CriptConnectionString.Cripto()
        .DecryptAES(builder.Configuration.GetConnectionString("DefaultConnection"),
            "029SOK-29",
            "GIPU-289X-W94"); 
    
    option.UseSqlServer(conn);

    option.EnableSensitiveDataLogging();
});

Código 3 - EnableSensitiveDataLogging()

No código 3 o option.EnableSensitiveDataLogging() mostra todo select, insert, delete e update.

Você pode utilizar o pacote CriptConnectionString para criptografar os dados antes de colocar dentro do arquivo de configuração.

Aqui tem outro artigo que mostra como fazer isso passo a passo, veja o link https://www.nuget.org/packages/CriptConnectionString-NET-6#supportedframeworks-body-tab.

Espero ter ajudado e qualquer d√ļvida pode entrar em contato.

Mauricio Junior.