Может кто-нибудь дать мне код или ценный sugestion для шифрования и расшифровки большого файла на С#? Я пытаюсь сделать это с помощью TripleDES.it должен быть безопасным, быстрым и надежным здесь шифрование и дешифрование должны выполняться на основе моего ключа.
Я нашел хорошую статью.
Ниже приведен фрагмент кода, если его кто-то ищет.
public static byte[] Encrypt(byte[] plain, String key)
{
byte[] keyArray = SoapHexBinary.Parse(key).Value;
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.CBC;
tdes.Padding = PaddingMode.None;
tdes.IV = new byte[8];
ICryptoTransform cTransform = tdes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(plain, 0, plain.Length);
tdes.Clear();
return resultArray;
}
public static byte[] Decrypt(byte[] cipher, String key)
{
byte[] keyArray = SoapHexBinary.Parse(key).Value;
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.CBC;
tdes.Padding = PaddingMode.None;
tdes.IV = new byte[8];
ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(cipher, 0, cipher.Length);
tdes.Clear();
return resultArray;
}
Имейте в виду, что я передавал ключ, как в формате HexBinary. В вышеприведенном коде используется CBC-режим шифрования с начальным вектором {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, а для заполнения - None, поскольку данные, которые я прошел, всегда были кратными 64 бит. Поэтому, если ваш размер данных не является фиксированным, вам может потребоваться установить дополнение.
Шифровать/расшифровывать с помощью TripleDES с помощью С#
Надеюсь, что это поможет!:)