Às vezes, em algum lugar temos que executar criptografia e descriptografia de dados. Então hoje eu vou mostrar como criptografar e descriptografar dados em nosso aplicativo. Para esta demonstração, usei o aplicativo WPF. Fazer criptografia e descriptografia é fácil, mas temos que lembrar/saber poucas coisas. Este exemplo mostra como você pode usar c# para criptografar e descriptografar strings usando uma chave de sal para proteger os dados.

Esse tipo de criptografia é chamada de criptografia de chave simétrica, o que significa que a sequência só pode ser descriptografada se a outra parte tiver a chave correta (que é usada para criptografia).

Então aqui está o código para criptografia e descriptografia.

using System;  
using System.Security.Cryptography;  
using System.Text;  
   
namespace DataEncrypterDecrypter  
{  
    public class CryptoEngine  
    {  
        public static string Encrypt(string input, string key)  
        {  
            byte[] inputArray = UTF8Encoding.UTF8.GetBytes(input);  
            TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();  
            tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);  
            tripleDES.Mode = CipherMode.ECB;  
            tripleDES.Padding = PaddingMode.PKCS7;  
            ICryptoTransform cTransform = tripleDES.CreateEncryptor();  
            byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);  
            tripleDES.Clear();  
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);  
        }  
        public static string Decrypt(string input, string key)  
        {  
            byte[] inputArray = Convert.FromBase64String(input);  
            TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();  
            tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);  
            tripleDES.Mode = CipherMode.ECB;  
            tripleDES.Padding = PaddingMode.PKCS7;  
            ICryptoTransform cTransform = tripleDES.CreateDecryptor();  
            byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);  
            tripleDES.Clear();   
            return UTF8Encoding.UTF8.GetString(resultArray);  
        }  
    }  
}  

Como você vê em código, o CipherMode e o PaddingMode devem ser os mesmos para ambas as operações. Existem várias opções para CipherMode e PaddingMode, você pode ler suas diferenças e escolher qual delas é a melhor para sua necessidade. No caso da chave que passamos como parâmetro para ambas as operações, deve ser o mesmo para ambos. Esta chave é o que seu aplicativo usa para criptografia e descriptografia que você deve manter em segredo outra pessoa pode descriptografar seus dados com essa chave e deve ser de 128 bits ou 192 bits (nem mesmo no meio). Se você não sabe que sua chave fornecida é de 128/192 bits ou não, você pode usar este aplicativo para cálculo de bits.

Aqui está como eu usei para propósito de demonstração.

private void encryptbtn_Click(object sender, RoutedEventArgs e)  
{  
    if(plaintext.Text!= string.Empty)  
    {  
        //Here key is of 128 bit  
        //Key should be either of 128 bit or of 192 bit  
        Ciphertext.Text = CryptoEngine.Encrypt(plaintext.Text, "sblw-3hn8-sqoy19");  
    }  
}  
  
private void decryptbtn_Click(object sender, RoutedEventArgs e)  
{  
    if(Ciphertext.Text != string.Empty)  
    {  
        //Key shpuld be same for encryption and decryption  
        decryptedtext.Text = CryptoEngine.Decrypt(Ciphertext.Text, "sblw-3hn8-sqoy19");  
    }  
}  

image

image

É isso, é isso. Agora você pode usar esses métodos/operações de acordo com sua necessidade. Você pode baixar o código de amostra daqui.


Autor: Janak Shrestha

Artigo Original