|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.12.2012, 10:48 | #1 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 11
|
Чтение файла, шифрование Blowfish
Помогите пожалуйста, очень срочно.
Моя задача реализовать алгоритм шифрования Blowfish. Шифрование файлов/папок. В переменные high, low подаётся информация по 32 бита (4 байта), я понимаю, что в чём проблема взять ф-цию fread и считывать, но как правильно это сделать, т.к. если у нас в конце получается остается меньше 4 байт информации мы должны заполнить недостающее место НУЛЯМИ, или другим заранее известным способом. Помогите реализовать функцию которая к примеру будет открывать файл и считывать в эти переменные 4 байта. И ещё один вопрос, я хочу зашифровать каталог с файлами и подкаталогами, всё это делаю при помощи FindFirstFile, FindNextFile (это я знаю), по идее я должен зашифрованный вариант записать в один файл, но как при расшифровки восстановить каталоги. Код:
Последний раз редактировалось Stilet; 20.12.2012 в 11:11. |
20.12.2012, 11:23 | #2 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
Цитата:
Интереснее то, что при расшифровывании также следует выделять ситуацию с "обрезанным" блоком: некоторые файловые форматы чувствительны к тому, чем заканчивается файл, и добавление пары нулевых байтов в конец может их "испортить". |
||
22.12.2012, 19:33 | #3 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 11
|
Спасибо за ответ.
Для начала я пишу ф-цю открытия файла для чтения и шифрования/дешифрования, но столкнулся с проблемой преобразования unsigned long в char, пишу на чистом СИ поэтому С++ функции использовать нельзя. Вот код: Код:
Код:
|
23.12.2012, 23:36 | #4 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 11
|
У меня получается, что после расшифровки я записываю значения в шестнадцатеричной системе!
Как мне реализовать перевод? я в ступоре из-за какой-то ерунды, а задание уже сдавать нужно, спросить неукого |
23.12.2012, 23:53 | #5 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
что бы получить 16 разрядное число типо 128.
128 * 255; 16 разрядное может содержать 65535 если разделить макс 65535... на 255, мы получим 256 //----- 8 разрядное... байт иначе 255 макс 16 разрядное 2 байта 655535 макс 32 разрядное 4 байта 4294967295 макс //----- я говорю только о положительных числах... со знаком в половину меньше. //----- а так если у тебя число ввиде текста попробуй atoi потом itoa, только укажи 10 систему не знаю прокатит ли... а так есть множество в инете реализаций IntToHex HexToInt раз два
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Последний раз редактировалось Perchik71; 24.12.2012 в 00:05. |
24.12.2012, 19:06 | #6 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 11
|
Помогите пожалуйста. Днями ломаю голову, вообщем сделал я перевод из hextoint но мне это не помогло.
У меня есть текстовый файл с текстом: Hello World. После шифрации он принимает вид: baae65f031fb1b3c, после расшифровывания: 6c6c65486f57206f. По идее первые 2 символа равны первому символа исходного текста 6с = H, я перевёл 6с из 16-ричной системы и получил 108, я посчитал что 108 это будет моим ASCII-кодом, но ошибся 108 это l. Помогите, я уже 2-й день сижу за программой и все идеи которые приходят в голову не проходят. Может кто-то уже делал шифрование файла и может подсказать, что мне делать. Ещё раз повторюсь, спросить неукого исходного текста других работ я не нашёл, а мне кроме этого ещё нужно сделать шифрование каталогов, что без шифрования файлов я не могу сделать. Последняя надежда на форум... Весь исходный код не могу выложить в комментарии, поэтому залил на гугл драйв: https://docs.google.com/folder/d/0B_...tqMVRONWs/edit Последний раз редактировалось ManHunterGroms; 24.12.2012 в 19:09. |
24.12.2012, 21:38 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
На вашем месте я бы начал без шифрования - сделал бы чтоб blowfish_encrypt_block / blowfish_decrypt_block просто копировали блок данных. Это поможет вам разобраться с чтением/записью файла.
|
24.12.2012, 21:54 | #8 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 11
|
Что вы имеете ввиду под копирование блок данных? я просто не понимаю как это поможет с записью файла.
|
25.12.2012, 07:59 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Хорошо, зайдем с другой стороны. Вам не кажется странным, что вы пишете зашифрованный файл с помощью fprintf а читаете его через fread?
У вас на входе в fprintf есть какието данные, которые преобразуются и записываются в файл. Вам надо сделать обратное преобразование. Задайте себе вопрос что делает fprintf (в вашем случае) и как сделать то же самое без fprintf а через fwrite и найдете ответ. |
25.12.2012, 17:58 | #10 | |
Пользователь
Регистрация: 15.12.2011
Сообщений: 11
|
Цитата:
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шифрование файла | by_Trojan | C# (си шарп) | 2 | 07.04.2012 20:28 |
шифрование файла (Assembler) | phantom4eg | Помощь студентам | 2 | 10.04.2010 16:36 |
Шифрование файла. | dip | Помощь студентам | 1 | 04.12.2009 10:17 |
шифрование и дешифрование файла | Анастасия123456789 | Помощь студентам | 1 | 05.05.2009 15:47 |
Реализация BlowFish на Delphi | Unconnected | Общие вопросы Delphi | 2 | 19.02.2009 12:52 |