Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для VladislavTepes
80 / 80 / 14
Регистрация: 27.06.2012
Сообщений: 555
Записей в блоге: 1

Побайтовый XOR файла

11.11.2014, 18:54. Показов 2360. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть задача: заксорить каждый байт входного файла и записать его вы выходной. Накидал вот это:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void gamma(FileStream^ in, FileStream^ out, Byte gamma_val)
{
    array<Byte> ^buf = nullptr;
 
    BinaryReader ^ br = gcnew BinaryReader(in);
    buf = br->ReadBytes(in->Length);
    br->Close();
 
    BinaryWriter ^ bw = gcnew BinaryWriter(out);
    for (int i = 0; i < buf->Length; i++)
    {
            bw->Write(buf[i] ^ gamma_val);
    }
 
    in->Close();
    out->Close();
    delete in;
    delete out;
    bw->Close();
    br->Close();
        
}
Вызывается так:
C#
1
2
int gamma_val = some_int_value;
gamma(gcnew FileStream(in_name, FileMode::Open), gcnew FileStream(out_name, FileMode::OpenOrCreate), (Byte)gamma_val);
Но оно почему-то не работает - даже размеры входного и выходного файла после обработки отличаются (выходной получается больше). Что здесь не так? Прошу тапками не кидать, ибо к CLI-ному C++ до этого даже близко не подходил.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.11.2014, 18:54
Ответы с готовыми решениями:

Шифровка и расшифровка файла XOR
Привет! Помогите, пожалуйста, новичку в WinForms с программой. Мне нужно выбирать файл, потом выбрав нужный радиобаттон соответственно...

Шифрование XOR файла в WinForms C++
Здравствуйте. Есть задача: заксорить каждый байт входного файла с гаммой и записать его вы выходной. Накидал вот это: void...

XOR шифрование текстового файла
Нужно сделать программу шифрования XOR в форме,чтобы можно было выбрать файл для шифрования в диалоговом окне и также для дешифровки ...

3
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
12.11.2014, 09:29
VladislavTepes, В C# оператор ^ для двух Byte'ов с какого то хрена возвращает значение int. Так как в C++/CLI все, что касается CLI - это C# с видоизмененным синтаксисом, то в вашем случае, скорее всего, operator ^ также возвращает Int32. То есть, выходной файл в теории будет в 4 раза больше. Можно вылечить так:
C++
1
bw->Write(Byte(buf[i] ^ gamma_val));
Цитата Сообщение от VladislavTepes Посмотреть сообщение
Прошу тапками не кидать, ибо к CLI-ному C++ до этого даже близко не подходил.
А за ту часть, которая к CLI не имеет отношение, кидать тапками, значит, можно? В честь чего вы в своем методе делает delete in и delete out, если вы в своем методе под них память не выделяете? Так делать нельзя в любом языке программирования.
1
 Аватар для VladislavTepes
80 / 80 / 14
Регистрация: 27.06.2012
Сообщений: 555
Записей в блоге: 1
12.11.2014, 09:54  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение
В честь чего вы в своем методе делает delete in и delete out
А память, выделенная gcnew, garbage collector-ом зачищается?
Цитата Сообщение от kodv Посмотреть сообщение
если вы в своем методе под них память не выделяете?
А в
C#
1
gamma(gcnew FileStream(in_name, FileMode::Open), gcnew FileStream(out_name, FileMode::OpenOrCreate), (Byte)gamma_val);
gcnew - не выделение памяти, что ли?

Добавлено через 6 минут
А, признаю ошибку. gcnew выделяет память в управляемой куче.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
12.11.2014, 18:29
Цитата Сообщение от VladislavTepes Посмотреть сообщение
А память, выделенная gcnew, garbage collector-ом зачищается?
Зачищается (говорят "собирается", collect), но чтобы GC сделал свою работу, нужно обезопасить себя от наличия "висящих" в экземпляре типа FileStream ссылок на неуправляемые типы.
C++
1
in->Dispose();
Хотя, я бы не стал этого делать в методе gamma() - лучше вне метода, а то "чёрный ящик" становится совсем чёрным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2014, 18:29
Помогаю со студенческими работами здесь

Возможен ли побайтовый доступ к переменной?
Привет. Скажите пожалуйста, возможно ли осуществить побайтовый доступ к переменной, например int - 4 байтовая переменная, в ассемблере (к...

Xor шифрование exe-файла не дает нужного результата
Привет всем. Пытаюсь два дня Xor'ить файл exe. Проблема в самом Xor'e, он не может заксорить файл , так , чтобы он работал. byte m1...

Побайтовый вывод файла
Пытаюсь ввести в консоль файл в шестнадцатеричном виде, но происходит ошибка при выполнении. format PE console 4.0 include...

Исключающее ИЛИ (XOR). Нужен пример операции побайтного XOR
Может кто-нибудь привести пример операции побайтного XOR?что-то вроде: есть данные,считанные из файла любого формата,эти данные по...

Побайтовый поиск
Здравствуйте у меня возник , вопрос попытался решить не выйшло , вообщем. Нужно зделать побайтовое сравнения в бинарном файле. Можна...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru