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
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Gestire undefined e partial nelle reactive forms di Angular
Eseguire attività con Azure Container Jobs
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Generare file per il download da Blazor WebAssembly
Utilizzare domini personalizzati gestiti automaticamente con Azure Container Apps
Creare moduli CSS in React
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Sfruttare lo stream rendering per le pagine statiche di Blazor 8
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare la session affinity con Azure Container Apps
Evitare la command injection in un workflow di GitHub