Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > проблема с шифрование DES в режиме OFB


Автор: Random86 15.5.2008, 17:27
   Народ хелп у меня следующая проблема. Мне нужно было написать кусок кода где шифруется файл методом DES в различных режимах: CBC, ECB, CFB, OFB. Так вот поковырявшись в MSDN нашел класс DES, так вот шифрование в режимах: CBC, ECB и  CFB, проходит нормально. А вот в режиме OFB, вылетает следующие окно "Режим с обратной связью по выходу (OFB) не поддерживается этой реализацией.". В MSDN про это не чего не сказано. Может кто сталкивался с такой проблемой? Пишу это все на VS2005. Как я понял .Net использует CryptoAPI, мне остается только самому вызывать их и шаманить с ними? Или же можно ка-то обойти это не доработку. Пытался найти готовые библиотеки с реализацией DES, не чего не нашел. На Delphi есть, а вот на студию нет. Может у кого есть? Исходники кода думаю мало помогут но вдруг.
Код

            FileStream fStream = File.Open(txCreateFileLaba4.Text, FileMode.Create, FileAccess.Write, FileShare.None);
            FileStream fs = File.Open(txOpenFileLaba4.Text, FileMode.Open, FileAccess.Read, FileShare.None);
            BinaryReader fStream2 = new BinaryReader(fs);

            DES DESalg = DES.Create();

            //Выбор режима шифрования
            if (rdCBCLaba4.Checked)
                DESalg.Mode = CipherMode.CBC;
            else if (rdCFBLaba4.Checked)
                DESalg.Mode = CipherMode.CFB;
            else if (rdECBLaba4.Checked)
                DESalg.Mode = CipherMode.ECB;
            else if (rdOFBLaba4.Checked)
                DESalg.Mode = CipherMode.OFB;

            CryptoStream cStream;
            
            //Привязка потока шифрования к методу
             cStream = new CryptoStream(fStream, //Вот тут та как раз и вылетает сообщение
                 DESalg.CreateEncryptor(sKEY, sIV),
                 CryptoStreamMode.Write);

            //Шифрование данных
            BinaryWriter sWriter = new BinaryWriter(cStream);
            sWriter.Write(fStream2.ReadBytes((int)fs.Length));
            
            sWriter.Close();
            cStream.Close();
            fStream.Close();
            fStream2.Close();
            fs.Close();  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)