Cifrar y descifrar una cadena en C#

Este tutorial discutirá métodos para cifrar y descifrar una cadena en C#.
Cifre una cadena con la clase AesManaged
en C#
El cifrado es el proceso de convertir datos en texto cifrado para que cualquier persona no autorizada no pueda acceder a los datos. En este tutorial, usaremos el algoritmo Estándar de cifrado avanzado
(AES) para cifrar y descifrar una cadena en C#. La clase AesManaged
proporciona métodos para cifrar y descifrar nuestra cadena utilizando el algoritmo AES. La función CreateEncryptor()
puede cifrar datos utilizando una clave. Tenemos que pasar nuestras claves de cadena a la función CreateEncryptor()
. El siguiente ejemplo de código nos muestra cómo cifrar una cadena de acuerdo con el algoritmo AES con la función CreateEncryptor()
en 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); } } }
Producción :
6+PXxVWlBqcUnIdqsMyUHA==
En el código anterior, ciframos la cadena WaterWorld
con la clave pública
y la clave secreta
como claves y devolvimos 6+PXxVWlBqcUnIdqsMyUHA==
como una cadena cifrada. Ambas claves deben tener al menos 8 caracteres de longitud.
Descifrar una cadena con la clase AesManaged
en C#
El descifrado es el proceso de convertir el texto cifrado de nuevo a los datos originales para que las personas autorizadas puedan acceder a los datos. La función CreateDecryptor()
puede descifrar datos usando una clave. Tenemos que pasar nuestras claves de cadena a la función CreateEncryptor()
. Las claves deben ser las mismas que las utilizadas en la función CreateDecryptor()
. El siguiente ejemplo de código nos muestra cómo cifrar una cadena de acuerdo con el algoritmo AES con la función CreateDecryptor()
en 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); } } }
Producción :
WaterWorld
En el código anterior, convertimos la cadena cifrada 6+PXxVWlBqcUnIdqsMyUHA==
del ejemplo anterior a su forma original WaterWorld
con la clave pública
y la clave secreta
como claves. Las claves deben ser las mismas que las utilizadas en el ejemplo anterior para que este método funcione.
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