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
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Utilizzare l'espressione if inline in una pipeline di Azure DevOps
Creare agenti facilmente con Azure AI Agent Service
Gestire i dati con Azure Cosmos DB Data Explorer
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Migrare una service connection a workload identity federation in Azure DevOps
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Gestione dei nomi con le regole @layer in CSS
Change tracking e composition in Entity Framework
Referenziare un @layer più alto in CSS
Anonimizzare i dati sensibili nei log di Azure Front Door
I più letti di oggi
- Validazione automatica dei parametri in Web API con ASP.NET Core 2.1
- Recuperare i file utilizzati di recente in un'Universal App
- Applicare un'animazione al contenuto di un ContentControl nella Universal Windows Platform
- AI&ML Conference 2019 - Milano
- .NET Serverless Day - Online
- Rilasciata la versione Beta 2 di Silverlight 2.0