Un'operazione molto comune in un'applicazione .NET è quella di criptare una stringa per poi essere in grado di decriptarla successivamente. Per eseguire questa operazione possiamo utilizzare provider di crittografia simmetrici come quello che utilizza l'algoritmo AES. Questi provider utilizzano una chiave per criptare una sringa e utilizzano la stessa chiave per decriptarla. Questa chiave è molto importante quindi va tenuta in un posto sicuro e non in un file di configurazione in chiaro o all'interno del codice che potrebbe essere decompilato o, peggio, essere su server accessibili pubblicamente.
public static string EncryptString(string text, string keyValue) { var key = Encoding.UTF8.GetBytes(keyValue); using (var aesAlg = Aes.Create()) { using (var encryptor = aesAlg.CreateEncryptor(key, aesAlg.IV)) { using (var msEncrypt = new MemoryStream()) { using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (var swEncrypt = new StreamWriter(csEncrypt)) { swEncrypt.Write(text); } } var result = msEncrypt.ToArray(); return Convert.ToBase64String(result); } } } }
Il metodo accetta in input la stringa da criptare e la chiave da usare. Per prima cosa questa chiave viene trasformata in un array di byte. Successivamente vengono creati tutti gli oggetti che entrano nel processo di crittografia cioè quello che rappresenta l'algoritmo, quello responsabile della crittografia per l'algoritmo, lo stream che conterrà i dati criptati, l'oggetto che fisicamente genera i dati da inviare allo stream e infine writer che scrive i dati criptati nello stream. Una volta creati tutti questi oggetti, interconnessi tra loro, con il metodo Write del writer scriviamo i dati criptati nello stream e successivamente li leggiamo come array di byte con il metodo ToArray. Per finire, convertiamo l'array di byte in una stringa encodada in base64 tramite Convert.ToBase64String
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestire progetti NPM in .NET Aspire
Gestione file Javascript in Blazor con .NET 9
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Il nuovo controllo Range di Blazor 9
Utilizzare WebJobs su Linux con Azure App Service
Utilizzare WhenEach per processare i risultati di una lista di task
Selettore CSS :has() e i suoi casi d'uso avanzati
Introduzione ai web component HTML
Triggerare una pipeline su un altro repository di Azure DevOps
Centralizzare gli endpoint AI Foundry con Azure API Management
Utilizzare Container Queries nominali
Ottenere un token di accesso per una GitHub App
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- The Agentic Day - Milano
- .NET Conference Italia 2025 - Milano
- Gestione ciclo di vita in .NET Aspire
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Gestione CSS in Blazor con .NET 9
- Gestione file Javascript in Blazor con .NET 9