Попробуйте так, это немного переделанный пример из msdn:
| Код | public class Program { public static void Main(string[] args) { byte[] desKey = new byte[] { 1, 2, 4, 5, 6, 7, 8, 9 }; byte[] desIV = new byte[] { 1, 2, 4, 5, 6, 7, 8, 9 };
EncryptDecryptData("C:\\1.txt", "C:\\1_enc.txt", desKey, desIV, true); EncryptDecryptData("C:\\1_enc.txt", "C:\\2.txt", desKey, desIV, false); }
private static void EncryptDecryptData(string inputFilePath, string outputFilePath, byte[] desKey, byte[] desIV, bool isEncrypt) { FileStream inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read); FileStream outputStream = new FileStream(outputFilePath, FileMode.OpenOrCreate, FileAccess.Write);
DES des = new DESCryptoServiceProvider(); CryptoStream cryptoStream;
if (isEncrypt) { cryptoStream = new CryptoStream(outputStream, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write); } else { cryptoStream = new CryptoStream(outputStream, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write); }
byte[] data = new byte[100]; int dataLength = 0;
while (inputStream.Position < inputStream.Length) { dataLength = inputStream.Read(data, 0, data.Length); cryptoStream.Write(data, 0, dataLength); }
cryptoStream.Close();
inputStream.Close(); outputStream.Close(); } }
|
Насчет длины ключа(из msdn): Этот алгоритм поддерживает ключи длиной 64 бита.
Насчет ключа и вектора(из msdn): Предположим, что Алиса и Боб являются двумя сторонами, которые хотят осуществлять связь по незащищенному каналу; они могли бы воспользоваться шифрованием с закрытым ключом следующим образом. Алиса и Боб соглашаются использовать некоторый определенный алгоритм (например, AES) с определенным ключом и вектором инициализации.Алиса пишет сообщение и создает сетевой поток, через который можно отправить это сообщение (например, именованный канал или канал электронной почты).Затем она шифрует текст с помощью ключа и вектора инициализации и по интрасети пересылает зашифрованное сообщение и вектор инициализации Бобу.Боб принимает зашифрованный текст и осуществляет расшифровку, используя ранее согласованные ключ и вектор инициализации.Если происходит перехват передаваемых данных, злоумышленник не может восстановить исходное сообщение, так как ему не известны ключ и вектор инициализации.В этой ситуации в секрете должен сохраняться только ключ.В более реалистичном случае либо Алиса, либо Боб создает закрытый ключ и использует шифрование с открытым ключом (асимметричное) для передачи другой стороне закрытого (симметричного) ключа. |