using System.Security.Cryptography;
static void Main(string[] args)
{
string rawString = "Make every second count.";
string encryptedString = Encrypt3DES(rawString);
string decryptedString = Decrypt3DES(encryptedString);
Console.WriteLine($"Raw:{rawString}\nencrypted:{encryptedString}\ndecrypted:{decryptedString}");
Console.ReadLine();
}
public static string Encrypt3DES(string rawString, string encryptKey = "serenityserenityserenityserenity", string encryptIv = "04D4DA042DE=")
{
using (SymmetricAlgorithm tripleDesProvider = new TripleDESCryptoServiceProvider())
{
try
{
tripleDesProvider.Key = Convert.FromBase64String(encryptKey);
tripleDesProvider.IV = Convert.FromBase64String(encryptIv);
tripleDesProvider.Mode = System.Security.Cryptography.CipherMode.CBC;
tripleDesProvider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
using (ICryptoTransform ct = tripleDesProvider.CreateEncryptor(tripleDesProvider.Key, tripleDesProvider.IV))
{
byte[] bytes = Encoding.UTF8.GetBytes(rawString);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write))
{
cs.Write(bytes, 0, bytes.Length);
cs.FlushFinalBlock();
cs.Close();
string result = Convert.ToBase64String(ms.ToArray());
return result;
}
}
}
}
catch (Exception ex)
{
throw;
}
}
}
public static string Decrypt3DES(string rawString, string encryptKey = "serenityserenityserenityserenity", string encryptIv = "04D4DA042DE=")
{
using (SymmetricAlgorithm tripleDesProvider = new TripleDESCryptoServiceProvider())
{
try
{
tripleDesProvider.Key = Convert.FromBase64String(encryptKey);
tripleDesProvider.IV = Convert.FromBase64String(encryptIv);
tripleDesProvider.Mode = System.Security.Cryptography.CipherMode.CBC;
tripleDesProvider.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
using (ICryptoTransform ct = tripleDesProvider.CreateDecryptor(tripleDesProvider.Key, tripleDesProvider.IV))
{
byte[] bytes = Convert.FromBase64String(rawString);
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, ct, CryptoStreamMode.Write))
{
cs.Write(bytes, 0, bytes.Length);
cs.FlushFinalBlock();
cs.Close();
string result = Encoding.UTF8.GetString(ms.ToArray());
return result;
}
}
}
}
catch (Exception ex)
{
throw;
}
}
}