My Blog

Encrypt & Decrypt in .NET

by lupok on mercoledì 27 novembre 2013 14:26

Un po' di esempi su come cifrare e decifrare dati in .NET:

 

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
 
namespace TestEncryptDecrypt
{
   class Program
   {
      const String PASSWORD_HASH = "p@ssW0rd";
      const String SALT_KEY = "s@l7_K&y";
      const String VI_KEY = "@!2#&46%%64!@";
      const String TRIPLE_DES_KEY = "23jiefjneu5474bcaio48rhe";
      const String RSA_PRIVATE_KEY = "" +
         "wVe/eITmOuNLD1oSUrOsQHvG11m/kQpxkbAPMZxXGNDmKqdLj3BdRYp35hjNGh" + 
         "CNR4l2dGy4+Y9HVo+tHwHiuoBoSYm3/79C2Ars3mue+MkWZ6gCdn21WHtUmMOLtqeNLrKzX" + 
         "WpihI7MzZbK9bFfHK9f4w+O/ssuGo2628VYE2M=" +
         "AQAB" +
         "

7Tqlq/oXjTHWzmhNzbNOnBRaKotYZC/p4584ZSvlGjVkG7vdvuWFRe6gMkaOA1Zc9VVP" +           "pd+jHi6ihYN/WZbtKw==

"
 +          "0KQhxIC0zSQJKM2736fm8tiupnS9bTF/rg5YiY4NTbKLMNwJsg8rTWl27+knS6QDBUu/u" +           "u182aTa6hPzozOGqQ==" +          "LiyAGp0vAFh3Cu3aVvNTlaWQdz9wEPASgi93dpm4mgVSWuOSIZni+t2baK267oNczJOy" +           "UQLaaQGCuKIDo5hwyQ==" +          "qMbNRh9zoqru+eILg65YJcTg62huP+GVzqBuQL/3xQ2UiW7GLRMWTWXuP77U+dxwUR1o" +           "uPcaUxmHuWlwYmnxGQ==" +          "etPo41x9UGcYrsVaMeMsTTvUT9l5bYFigkWfkP1nGHwlzi/7FJjs38D6KoglPd" +           "eU7HYhnc76ud3VMDBbXldIZw==" +          "MgsHSSeE++sG65NRuMw+onYnMmhNeDouyRm75QhlVswDNzkUCq13xt8fR5RVyhBMsR54Z" +           "YwamKWoPlRz59myGEZqFx13RM0ztMZNhWU13ts4CA8401LnaqhZjmJcZSJgIDfKlc+YyMyGG" +           "g+2e4S8NEfIOLw7+/PSuWYqnh2C4rE=" +          "";       const String RSA_PUBLIC_KEY = "" +           "wVe/eITmOuNLD1oSUrOsQHvG11m/kQpxkbAPMZxXGNDmKqdLj3BdRYp35hjNGhCN" +           "R4l2dGy4+Y9HVo+tHwHiuoBoSYm3/79C2Ars3mue+MkWZ6gCdn21WHtUmMOLtqeNLrKzXWpih" +           "I7MzZbK9bFfHK9f4w+O/ssuGo2628VYE2M=" +           "AQAB" +           "";       static void Main(string[] args)       {          String plainText = "prova di cifratura stringa 1 &^'-_=";          String encrypt = EncryptRijndael(plainText);          String decrypt = DecryptRijndael(encrypt);          encrypt = EncryptTripleDES(plainText);          decrypt = DecryptTripleDES(encrypt);          encrypt = EncryptRSA(plainText);          decrypt = DecryptRSA(encrypt);          String hash = GetMd5Hash(plainText);       }       public static string EncryptRijndael(string plainText)       {          byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);          using (Rfc2898DeriveBytes rfc2898DeriveBytes =              new Rfc2898DeriveBytes(PASSWORD_HASH, Encoding.ASCII.GetBytes(SALT_KEY)))          {             byte[] keyBytes = rfc2898DeriveBytes.GetBytes(256 / 8);             using (var symmetricKey =                 new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.Zeros })             {                var encryptor = symmetricKey.CreateEncryptor(keyBytes, Encoding.ASCII.GetBytes(VI_KEY));                byte[] cipherTextBytes;                using (var memoryStream = new MemoryStream())                {                   using (var cryptoStream =                       new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))                   {                      cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);                      cryptoStream.FlushFinalBlock();                      cipherTextBytes = memoryStream.ToArray();                   }                }                return Convert.ToBase64String(cipherTextBytes);             }          }       }       public static string DecryptRijndael(string encryptedText)       {          byte[] cipherTextBytes = Convert.FromBase64String(encryptedText);          using (Rfc2898DeriveBytes rfc2898DeriveBytes =              new Rfc2898DeriveBytes(PASSWORD_HASH, Encoding.ASCII.GetBytes(SALT_KEY)))          {             byte[] keyBytes = rfc2898DeriveBytes.GetBytes(256 / 8);             using (var symmetricKey =                 new RijndaelManaged() { Mode = CipherMode.CBC, Padding = PaddingMode.None })             {                var decryptor = symmetricKey.CreateDecryptor(keyBytes, Encoding.ASCII.GetBytes(VI_KEY));                using (var memoryStream = new MemoryStream(cipherTextBytes))                {                   using (var cryptoStream =                       new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))                   {                      byte[] plainTextBytes = new byte[cipherTextBytes.Length];                      int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);                      return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount).TrimEnd("\0".ToCharArray());                   }                }             }          }       }       public static string EncryptTripleDES(string plainText)       {          using (TripleDESCryptoServiceProvider des =              new TripleDESCryptoServiceProvider())          {             des.Mode = CipherMode.ECB;             des.Key = System.Text.Encoding.ASCII.GetBytes(TRIPLE_DES_KEY);             des.Padding = PaddingMode.PKCS7;             using (ICryptoTransform DESEncrypt = des.CreateEncryptor())             {                Byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(plainText);                return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));             }          }       }       public static string DecryptTripleDES(string encryptedText)       {          using (TripleDESCryptoServiceProvider des =              new TripleDESCryptoServiceProvider())          {             des.Mode = CipherMode.ECB;             des.Key = System.Text.Encoding.ASCII.GetBytes(TRIPLE_DES_KEY);             des.Padding = PaddingMode.PKCS7;             using (ICryptoTransform DESEncrypt = des.CreateDecryptor())             {                Byte[] Buffer = Convert.FromBase64String(encryptedText.Replace(" ""+"));                return Encoding.UTF8.GetString(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));             }          }       }       static String EncryptRSA(String plainText)       {          Byte[] bytes = System.Text.Encoding.Unicode.GetBytes(plainText);          using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())          {             rsa.FromXmlString(RSA_PUBLIC_KEY);             return Convert.ToBase64String(rsa.Encrypt(bytes, false));          }       }       static String DecryptRSA(String ciphertext)       {          using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())          {             rsa.FromXmlString(RSA_PRIVATE_KEY);             Byte[] decrypt = rsa.Decrypt(Convert.FromBase64String(ciphertext), false);             return System.Text.Encoding.Unicode.GetString(decrypt);          }       }       static string GetMd5Hash(string input)       {          using (MD5 md5Hash = MD5.Create())          {             byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));             StringBuilder sBuilder = new StringBuilder();             for (int i = 0; i < data.Length; i++)                sBuilder.Append(data[i].ToString("x2"));             return sBuilder.ToString();          }       }    } }
TestEncryptDecrypt.zip

Blogs Parent Separator My Blog
Author
lupok

My Blog

Tags