Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 2
Регистрация: 18.01.2016
Сообщений: 220

Дозапись в файл шифрованной информации

16.02.2016, 21:12. Показов 842. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу понять, почему не работает дозапись в файл. Сначала создаю файл и пишу туда шифрованный текст. ВСЕ РАБОТАЕТ, данные потом можно расшифровать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
            string logsPath = @"D:\MyTest.txt";
            byte[] key = Encoding.Default.GetBytes("key");
            byte[] data = Encoding.Default.GetBytes(@"test\string");
            if (!Directory.Exists(logsDirectory))
            {
                Directory.CreateDirectory(logsDirectory);
                if (!File.Exists(logsPath))
                {
                    byte[] rez = RC4(data, key);
                    File.WriteAllBytes(logsPath, rez);
                }
            }
Если пытаюсь дозаписать так, как ниже, он вообще меняет все данные в файле и расшифровать не выходит. Если без Convert.ToChar, то он нормально дозаписывает, но в виде цифр.
C#
1
2
3
4
5
6
7
8
StreamWriter sw = File.AppendText(logsPath);
 byte[] truee = Encoding.Default.GetBytes(@"test\test\test");
byte[] rez = RC4(truee, key);
       for (int i = 0; i < rez.Length; i++)
           {
              sw.Write([B]Convert.ToChar[/B](rez[i]));
           }
sw.Close();
Подскажите пожалуйста, в чем проблема и как ее решить. Алгоритм шифрования RC4
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2016, 21:12
Ответы с готовыми решениями:

Дозапись информации в файл
Здравствуйте. Такая проблема, после нажатия кнопки информация из listbox записывается в файл(txt), но как сделать чтобы информация не...

Дозапись информации в текстовый файл
Как записать содержимое textbox в конец текстового файла?

Дозапись информации в файл,отличный от Textfile
Доброго времени суток. Подскажите новичку,как дозаписать информацию файл,причем он выглядит следующим образом fd:file of real; Так...

8
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
16.02.2016, 21:34
frank2, метод StreamWriter.Write абсолютно идентичен методу Console.Write. Ты подаешь на вход байты, байт это целое число от -128 до 127. Он и пишет цифры. Так что тебе надо зашифрованный массив байтов перевести в массив char и записать этот массив char. Либо надо записывать бинарно, как через WriteAllBytes.
0
0 / 0 / 2
Регистрация: 18.01.2016
Сообщений: 220
16.02.2016, 21:49  [ТС]
inst_mefi, если выводить в консоль, то он показывает совсем не то, что пишет в файл
0
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
16.02.2016, 22:03
frank2, я могу повторить, что StreamWriter пишет в файл текст. Если ему подсунуть числа, он числа трансформирует в текст вызывая ToString и пишет. Кстати у него нет перегрузки для Write(byte), он наследует его от TextWriter, который использует консоль. Вам надо писать бинарно или мириться с циферками, или явно приводить byte к char.
0
0 / 0 / 2
Регистрация: 18.01.2016
Сообщений: 220
16.02.2016, 22:19  [ТС]
inst_mefi, если просто
C#
1
sw.Write(rez[i]);
он ДОЗАПИСЫВАЕТ, но цифры.
Если
C#
1
sw.Write(Convert.ToChar(rez[i]));
то он ПЕРЕПИСЫВАЕТ, но символы
0
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
16.02.2016, 22:44
frank2, у меня к сожалению нет вашей реализации RC4. Если поставить два ваших блока подряд без шифрования то они работают корректно и с конвертацией в чар и без. Без конвертации естественно записываются числа, а не символы.
Без конвертации в Char получаем test\string11610111511692116101115116921 16101115116
С конвертацией test\stringtest\test\test
0
0 / 0 / 2
Регистрация: 18.01.2016
Сообщений: 220
17.02.2016, 10:05  [ТС]
Для простоты добавил на форму. button1 пишет в файл, button2 дозаписывает, button3 расшифровывает. Если нажать 1, а потом 3, все нормально, можно проверить открыв в браузере, тк там html. Если кажать 1 2 3, то первую часть рашифрует, а вторую нет, в этом вся проблема
Вложения
Тип файла: rar WF.rar (53.5 Кб, 3 просмотров)
0
22 / 25 / 11
Регистрация: 10.10.2013
Сообщений: 165
17.02.2016, 20:08
frank2, вы шифруете строку ключом длиной 256 байт. При записи первого блока вы начиная с первого байта и до размера данных выполняете xor. Ключевое - начиная с первого. Потом вы записываете другие данные, которые так же подвергаете xor начиная с первого бита ключа. Оно будет нормально работать только если вы будете писать данные блоками, равными длине ключа. Потому что если вы так запишите 4, например, блока по 64 байта, каждый шифруя отдельно, то на выходе будет расшифрован первый, остальные будут расшифрованы неверно. Потому что расшифровка будет происходить не 64-битным ключом, а 256-битным. Выход тут такой, что нужно при дополнении файла дешифровывать исходный, добавлять к нему новые данные и шифровать результат заново целиком.
0
215 / 211 / 146
Регистрация: 20.11.2014
Сообщений: 1,184
17.02.2016, 21:02
frank2, нажмите b1, потом очистите все данные с файла и нажмите b2, после дозаписи, попробуйте расшифровать - ничего не выйдет. Так что скорее всего дозапись у вас не корректно пишет в файл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2016, 21:02
Помогаю со студенческими работами здесь

Дозапись информации в txt
Здравствуйте товарищи, знаю как сохранять введенный текст в textbox в текстовый файл, но не могу понять как сохранять несколько текстов...

Дозапись в файл
Помогите пожалуйста, с дозаписью не работал. Требуется создать BAT при запуске которого в файл C:\1.txt писалась следующая информация в: ...

Дозапись в файл
Здравствуйте. Подскажите пожалуйста, как на нажатие кнопки производить дозапись в файл значения Label.Text построчно (при каждом нажатии...

Дозапись в файл
После выполнения программы, результат выписывается в текстовый файл. Если же запустить программу ещё раз, предыдущий результат удаляется....

Дозапись в файл
Подскажите плиз, почему у меня значения постоянно друг на друга переписываются в файле..в переменную message приходят с определенным...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru