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


Автор: 256zib 7.12.2009, 09:49
Всем привет!
Такая проблема: Есть набор битов, нужно создать новый файл, который будет в виде этих битов.
Если подробнее, то нужно побитово зашифровать файл, т.е. есть какой нибудь файл например mic.mp3, нужно последовательно перебирать и шифровать его байты. Перебирать и зашифровать получается, а вот правельно сохранить нет (

Автор: Heinzz 7.12.2009, 17:42
А стандартные методы шифрования не подходят?

Автор: 256zib 7.12.2009, 18:25
Нет,нужен именно мой. Пишу диплом, использую MC#,если слышали. Думал либо перегрузить имеющиеся стандартные методы или свою использовать. В любом случае надо выполнить шифрование побитово.

Автор: kobra 8.12.2009, 20:49
Цитата(256zib @  7.12.2009,  09:49 Найти цитируемый пост)
а вот правельно сохранить нет
а как делаеш, что не получается?

Автор: 256zib 9.12.2009, 11:41
#region Зашифровать файл
        public void SochrFile(string FName)
        {
            System.IO.FileStream fs;
            BinaryReader binReader =  new BinaryReader(File.Open(FName,  FileMode.Open));  //сохраняем виты в binRead
               
            if (!System.IO.File.Exists("new"+FName)) //создаем новый файл 
            {
                using (fs = System.IO.File.Create(FName))
                {
        for(int i=0; i<=fs.Length-1; i++)    {
                        fs.WriteByte(binReader.ReadByte());
                    }
                }
            }
 
        }
       #endregion


или  


System.IO.FileStream fs2;
            System.IO.FileStream fs1;
           
                using (fs1 = System.IO.File.OpenRead(FName))
                {
                   fs2=System.IO.File.Create("new"+FName);
                   for (int i = 0; i <= fs1.Length - 1; i++)
                   {
                       fs2.WriteByte((byte)fs1.ReadByte());
                   }
                   }
            }

Автор: 256zib 9.12.2009, 12:31
Разобрался

Вот пример, код конечно тестовый, но то, что мне надо, он делает )
Создает файл, изменяя все его байты сдигов влево

   byte[] byData = new byte[8220672];   // масив байтов заранее знаю размер, потом поменяю
           try
            {    // файловый поток, открывает файл (при отсутсвии создает) только для чтения
                FileStream fs = new FileStream("wer.mp3", FileMode.OpenOrCreate, FileAccess.Read);
                if (fs.CanSeek == true) // если можно производить поиск
                {
                    fs.Seek(55, SeekOrigin.Begin);  // делаем отступ на 55 байт с начала файла
                    // чтение данных и запись в масив байтов, со двигом в мас. 0, и длинной в 100 байт
                    fs.Read(byData, 0, 8220672);
                }
                fs.Dispose(); // освобождаем ресурсы
            }

   {
          //      MessageBox.Show(err.Message);  return;
            }

 try
            {
                using (FileStream fs=File.Create("new.mp3"))
                {
                fs.Seek(55, SeekOrigin.Begin);
           
                    for (int i = 0; i <= fs.Length; i++)
                    byData[i] = (byte)(byData[i]>>1);  // Изменяем ,fqns сдвигом 
                    fs.Write(byData, 0, byData.Length); // запись массива байт
                 }
            }
            catch (Exception err)
            {
          //      MessageBox.Show(err.Message); return;
            }

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