Crittografare e decrittografare una stringa in C#
-
Crittografa una stringa con la classe
AesManaged
inC#
-
Decifrare una stringa con la classe
AesManaged
inC#
Questa esercitazione discuterà i metodi per crittografare e decrittografare una stringa in C#.
Crittografa una stringa con la classe AesManaged
in C#
La crittografia è il processo di conversione dei dati in testo cifrato in modo che qualsiasi persona non autorizzata non possa accedere ai dati. In questo tutorial, utilizzeremo l’algoritmo Advanced Encryption Standard
(AES) per crittografare e decrittografare una stringa in C#. La classe AesManaged
fornisce metodi per crittografare e decrittografare la nostra stringa utilizzando l’algoritmo AES. La funzione [CreateEncryptor()
](https://learn.microsoft.com/it-it/previous-versions/windows/silverlight/dotnet-windows-silverlight/bb360013(v=vs.95/) può crittografare i dati utilizzando una chiave. Dobbiamo passare le nostre chiavi di stringa alla funzione CreateEncryptor()
. Il seguente esempio di codice ci mostra come crittografare una stringa secondo l’algoritmo AES con la funzione CreateEncryptor()
in C#.
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace encrypt_decrypt_string {
class Program {
static string Encrypt() {
try {
string textToEncrypt = "WaterWorld";
string ToReturn = "";
string publickey = "12345678";
string secretkey = "87654321";
byte[] secretkeyByte = {};
secretkeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
byte[] publickeybyte = {};
publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
MemoryStream ms = null;
CryptoStream cs = null;
byte[] inputbyteArray = System.Text.Encoding.UTF8.GetBytes(textToEncrypt);
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
ms = new MemoryStream();
cs = new CryptoStream(ms, des.CreateEncryptor(publickeybyte, secretkeyByte),
CryptoStreamMode.Write);
cs.Write(inputbyteArray, 0, inputbyteArray.Length);
cs.FlushFinalBlock();
ToReturn = Convert.ToBase64String(ms.ToArray());
}
return ToReturn;
} catch (Exception ex) {
throw new Exception(ex.Message, ex.InnerException);
}
}
static void Main(string[] args) {
string encrypted = Encrypt();
Console.WriteLine(encrypted);
}
}
}
Produzione:
6 + PXxVWlBqcUnIdqsMyUHA ==
Nel codice sopra, abbiamo crittografato la stringa WaterWorld
con publickey
e secretkey
come chiavi e abbiamo restituito 6+PXxVWlBqcUnIdqsMyUHA==
come stringa crittografata. Entrambe le chiavi devono contenere almeno 8 caratteri.
Decifrare una stringa con la classe AesManaged
in C#
La decrittografia è il processo di riconversione del testo cifrato nei dati originali in modo che le persone autorizzate possano accedere ai dati. La funzione CreateDecryptor()
può decrittografare i dati utilizzando una chiave. Dobbiamo passare le nostre chiavi di stringa alla funzione CreateEncryptor()
. Le chiavi devono essere le stesse usate nella funzione CreateDecryptor()
. Il seguente esempio di codice ci mostra come crittografare una stringa secondo l’algoritmo AES con la funzione CreateDecryptor()
in C#.
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace encrypt_decrypt_string {
class Program {
static string Decrypt() {
try {
string textToDecrypt = "6+PXxVWlBqcUnIdqsMyUHA==";
string ToReturn = "";
string publickey = "12345678";
string secretkey = "87654321";
byte[] privatekeyByte = {};
privatekeyByte = System.Text.Encoding.UTF8.GetBytes(secretkey);
byte[] publickeybyte = {};
publickeybyte = System.Text.Encoding.UTF8.GetBytes(publickey);
MemoryStream ms = null;
CryptoStream cs = null;
byte[] inputbyteArray = new byte[textToDecrypt.Replace(" ", "+").Length];
inputbyteArray = Convert.FromBase64String(textToDecrypt.Replace(" ", "+"));
using (DESCryptoServiceProvider des = new DESCryptoServiceProvider()) {
ms = new MemoryStream();
cs = new CryptoStream(ms, des.CreateDecryptor(publickeybyte, privatekeyByte),
CryptoStreamMode.Write);
cs.Write(inputbyteArray, 0, inputbyteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = Encoding.UTF8;
ToReturn = encoding.GetString(ms.ToArray());
}
return ToReturn;
} catch (Exception ae) {
throw new Exception(ae.Message, ae.InnerException);
}
}
static void Main(string[] args) {
string decrypted = Decrypt();
Console.WriteLine(decrypted);
}
}
}
Produzione:
WaterWorld
Nel codice sopra, abbiamo convertito la stringa crittografata 6+PXxVWlBqcUnIdqsMyUHA==
dell’esempio precedente alla sua forma originale WaterWorld
con le chiavi publickey
e secretkey
. Le chiavi devono essere le stesse usate nell’esempio precedente affinché questo metodo funzioni.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn