| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .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 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; } |