CrazyBanja
Интересующийся
Offline
|
|
« : 12-05-2010 15:46 » |
|
Написал прогу. Реализация шифратора. Таблицу замен не может определить. Что делать? Я не могу понять в чем проблема.
byte Tab_Z[8][16] = { 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF, 0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF };
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #1 : 12-05-2010 15:49 » |
|
а так byte Tab_Z[8][16]= { {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, };
|
|
|
Записан
|
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #2 : 12-05-2010 15:51 » |
|
Дело в byte. Ругается. Пишеь что неопределенный идентификатор
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #3 : 12-05-2010 15:54 » |
|
BYTE или unsigned char книжки читать надо по C++
|
|
|
Записан
|
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #4 : 12-05-2010 16:08 » |
|
А почему это ругаеться? for (int q=0; q<4; q++) *((Tab_Z *)&N+q) = 0x00;
|
|
« Последнее редактирование: 13-05-2010 16:07 от RXL »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #5 : 12-05-2010 16:13 » |
|
ругается, потому что это чушь какая-то скомпилировать то можно: а какой тип у N ? но сдаётся мне, что это всё неправильно и неудобно Что ты хочешь в этой строчке сделать ?
|
|
|
Записан
|
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #7 : 12-05-2010 16:22 » |
|
покажи определение Tab_Z
|
|
|
Записан
|
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #8 : 12-05-2010 16:24 » |
|
Это таблица подстановки верхняя byte Tab_Z[8][16]= { {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, {0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF}, };
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #9 : 12-05-2010 16:29 » |
|
блин, срочно читать что-нибудь вроде "C++ для начинающих"!
Tab_Z - это идентификатор, а ты его используешь как тип для приведения, я даже смысл понять не могу
строка for (int q=0; q<4; q++) *((Tab_Z *)&N+q) = 0x00; по твоему мнению что должна сделать ?
|
|
|
Записан
|
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #10 : 12-05-2010 16:41 » |
|
Просто byte там ругался, вот я и поставил Tab_Z. Бездумно. Она должна записать в накопитель 4 байта. 4 блока = 4 байта
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #11 : 12-05-2010 16:43 » |
|
Бездумно
таких не берут в космонавты попробуй копировать при помощи memmove
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #12 : 12-05-2010 16:44 » |
|
CrazyBanja, не слышишь совсем... Сформулируй словесно, что должна выполнять эта строка.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #13 : 12-05-2010 16:50 » |
|
Береться блок из потока и записываеться в накопитель. Побитно!
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #14 : 12-05-2010 16:51 » |
|
CrazyBanja, хорошо. Только это общие слова - для составления алгоритма не достаточно.
Что у тебя хранится в N?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #15 : 12-05-2010 16:54 » |
|
ага, тогда начнём с самого начала: что делает программа ?
а под for (int q=0; q<4; q++) *((Tab_Z *)&N+q) = 0x00;
скорее всего понимается memset(N,0,sizeof(N));
|
|
|
Записан
|
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #16 : 12-05-2010 16:56 » |
|
Прога реализует шифратор по нашему ГОСТу. Там храниться кусок текста (потока)
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #17 : 12-05-2010 16:59 » |
|
CrazyBanja, ГОСТов дофига и больше - без номера это ничего не значит.
Где хранится? Какого текста? Какого потока? Ничего не понятно...
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #18 : 12-05-2010 17:05 » |
|
Шифратор на основе ГОСТ 28147-89. Берет файл, шифрует его методом простой замены и на выходе получает другой файл.только зашифрованый
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #19 : 12-05-2010 17:08 » |
|
Хорошо, это понятно. Рассказывай дальше. Для информации: ГОСТ 28147-89
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #20 : 12-05-2010 17:13 » |
|
С помощья нета и хелпа слепил прогу. Вот пытаюсь ее теперь запустить. Не сильно меняя код, убрал все ошибки. Вроде правильно. Осталась малость... У меня тут еще такая чипуха осталась... // вывод результата в файл char sym_rez; for (int q=0; q<=3; q++) { sym_rez = *((unsigned char *)&n1+q); fprintf(f_end, "%c", sym_rez); } for (int q=0; q<=3; q++) { sym_rez = *((unsigned char *)&n2+q); fprintf(f_end, "%c", sym_rez); } } fclose (f_begin); fclose (f_end);
|
|
|
Записан
|
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #21 : 12-05-2010 17:15 » |
|
ГОСТ я знаю хорошо. А вот с програмированием не сложилось. А на диплом надо прожить. Вот и стараюсь что-то вспомнить
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #22 : 12-05-2010 17:52 » |
|
CrazyBanja, прежде всего, не торопись писать код - это последняя стадия реализации. Сперва опиши алгоритм словесно по шагам. Только после того, как сможешь таки вот образом его прогнать, только после этого пиши код. Кстати, то, что я вишу выше - какая-то каша, в которой и разбираться не хочется. Не понимаю, почему ты не используешь индексы.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Sla
|
|
« Ответ #23 : 12-05-2010 18:37 » |
|
ГОСТ я знаю хорошо. А вот с програмированием не сложилось. А на диплом надо прожить. Вот и стараюсь что-то вспомнить
Пипец. Если программирование нужно пережить на дипломе, то никто не будет читать текст программы. Пиши что хочешь. Конечно, если в рецензенты я не попаду
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
RXL
|
|
« Ответ #24 : 12-05-2010 19:07 » |
|
Слав, не попадешь: судя по IP - он из Нижнего Новгорода.
Интересная логика: нужно один раз за время учебы - значит не нужно изучать. А ведь таких предметов пруд пруди.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #25 : 12-05-2010 19:10 » |
|
Ребят, в том то и дело что програмирование мне понадобилось только на дипломе. Поэтому и такой програмист прогресирующий. Написать что-то нормальное тяжеловато и долговато будет. А этот код нашел в нете. Вроде что-то похоже, хотя и коряво, даже я вижу. Вот и стараюсь код подогнать, точнее хоть бы запустить...
Ой ребятки, я больше любил анализ, защиту, документацию. А програмирование нормально никогда и не преподавалось. И скажу точно никто из Вас мне рецензентом не попадеться)))
|
|
« Последнее редактирование: 13-05-2010 16:06 от RXL »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #26 : 12-05-2010 19:42 » |
|
CrazyBanja, интереса делать за тебя нам никакого нет. Помочь разобраться - это еще может быть интересным. Попробуй все-таки почитать самоучители по C или C++ (в твоем случае не суть важно). Например здесь можно найти: https://club.shelek.ru/viewfiles.php?id=16
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #27 : 12-05-2010 19:45 » |
|
Спасибо, но передомной их 2.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #28 : 12-05-2010 19:47 » |
|
CrazyBanja, почитай о массивах и доступе к элементам.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
CrazyBanja
Интересующийся
Offline
|
|
« Ответ #29 : 12-05-2010 20:39 » |
|
Почитал. Ничего нового. Практики просто не хватает. Кстате, прогу запустил. Даже обрадывался, жаль только работает неправильно((
|
|
|
Записан
|
|
|
|
|