Criptografar e descriptografar uma string em C#

Muhammad Maisam Abbas 3 junho 2021 9 maio 2021 Csharp Csharp String
  1. Criptografar uma string com a classe AesManaged em C#
  2. Descriptografar uma string com a classe AesManaged em C#
Criptografar e descriptografar uma string em C#

Este tutorial discutirá métodos para criptografar e descriptografar uma string em C#.

Criptografar uma string com a classe AesManaged em C#

Criptografia é o processo de conversão de dados em texto cifrado para que qualquer pessoa não autorizada não possa acessar os dados. Neste tutorial, usaremos o algoritmo Advanced Encryption Standard (AES) para criptografar e descriptografar uma string em C#. A classe AesManaged fornece métodos para criptografar e descriptografar nossa string usando o algoritmo AES. A função CreateEncryptor() pode criptografar dados usando uma chave. Temos que passar nossas chaves de string para a função CreateEncryptor(). O exemplo de código a seguir nos mostra como criptografar uma string de acordo com o algoritmo AES com a função CreateEncryptor() em 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);
        }
    }
}

Resultado:

6+PXxVWlBqcUnIdqsMyUHA==

No código acima, criptografamos a string WaterWorld com publickey e secretkey como chaves e retornamos 6+PXxVWlBqcUnIdqsMyUHA== como uma string criptografada. Ambas as chaves devem ter pelo menos 8 caracteres.

Descriptografar uma string com a classe AesManaged em C#

A descriptografia é o processo de conversão do texto cifrado de volta aos dados originais para que indivíduos autorizados possam acessar os dados. A CreateDecryptor() função pode descriptografar dados usando uma chave. Temos que passar nossas chaves de string para a função CreateEncryptor(). As chaves devem ser iguais às usadas na função CreateDecryptor(). O exemplo de código a seguir nos mostra como criptografar uma string de acordo com o algoritmo AES com a função CreateDecryptor() em 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);
        }
    }
}

Resultado:

WaterWorld

No código acima, convertemos a string criptografada 6+PXxVWlBqcUnIdqsMyUHA== do exemplo anterior de volta à sua forma original WaterWorld com publickey e secretkey como chaves. As chaves precisam ser iguais às usadas no exemplo anterior para que esse método funcione.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

Artigo relacionado - Csharp String

  • C# Converter Int a String
  • C# Converter String em Enum
  • Use Strings na instrução Switch em C#
  • C# Converter String para Data
  • Como converter uma string em Booleano em C#
  • Como converter uma string em uma array de bytes em C#