3DES File Encryption (C#)

Vengito
2 min readApr 4, 2021

In cryptography, Triple DES (3DES or TDES) is a symmetric-key block cipher, which applies the DES cipher algorithm three times to each data block.

To use 3DES functionality first off all we need to include “System.Security.Cryptography”.

using System.Security.Cryptography;

Then we should create and adjust an object which will do encryption:

var tdese = TripleDES.Create();tdese.Mode = CipherMode.ECB;tdese.Padding = PaddingMode.PKCS7;tdese.Key = ConvertHexStringToByteArray("AABBCCDDEE11223344556677889900FF");var encryptor = tdese.CreateEncryptor();

“ConvertHexStringToByteArray” function to convert hex string to byte array:

public static byte[] ConvertHexStringToByteArray(string hexString)
{
if (hexString.Length % 2 != 0)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
}

byte[] HexAsBytes = new byte[hexString.Length / 2];
for (int index = 0; index < HexAsBytes.Length; index++)
{
string byteValue = hexString.Substring(index * 2, 2);

if (byteValue == " ")
{
HexAsBytes[index] = Convert.ToByte("32");
}
else
{
HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}
}

return HexAsBytes;
}

Source code below shows how to use object “encryptor” to encrypt the file “FileToEncrypt.txt”.

byte[] result = null;byte[] data = File.ReadAllBytes("FileToEncrypt.txt");using (var mse = new MemoryStream()){using (var cs = new CryptoStream(mse, encryptor, CryptoStreamMode.Write))cs.Write(data, 0, data.Length);result = mse.ToArray();}if (result != null){string encrypteddata = UTF8Encoding.Default.GetString(result);File.AppendAllText("OutputFileName" + ".enc", encrypteddata, UTF8Encoding.Default);}

With this code we can store our file “FileToEncrypt.txt” encrypted as “OutputFileName.enc”. Decryption can be done with “tdese.CreateDecryptor();”.

--

--