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