![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
Здравствуйте!
Столкнулся я вот с такой загвоздочкой: "Моноалфавитная подстановка (в качестве ключа сохраняется алфавит замены, длина буквы 3 бита)" Сам алгоритм шифрования и дешифрования написал на Си работая со строкой
но в char один символ - один байт что мне нужно сделать, что бы символы стали длиной в 3 бита? И как с ними потом работать? Это сообщение отредактировал(а) Defoult - 6.10.2007, 23:30 |
|||
|
||||
DjoNIK |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Это сообщение отредактировал(а) DjoNIK - 6.10.2007, 23:32 -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
||||||
|
|||||||
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
т.е в массиве один символ - 3 бита?
|
|||
|
||||
DjoNIK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 28.9.2006 Где: Питер/Георгиевск Репутация: 4 Всего: 5 |
Нет Добавлено @ 23:44
Без асемблера точно не обойтись. Добавлено @ 23:46 Но ты уверен что тебе нужно именно это? Сформулируй четко вопрос! Просто я поначалу подумал, что тебе необходимо в одну переменную запихнуть три символа. И привел пример с массивами. Это сообщение отредактировал(а) DjoNIK - 6.10.2007, 23:57 -------------------- - Плесни-ка мне холодного кипятку. - Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды? - Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку. (разговор петербуржца и москвича) |
||||
|
|||||
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
Вариант №3 Моноалфавитная подстановка (в качестве ключа сохраняется алфавит замены, длина буквы 3 бита)
Суть моноалфавитной подстановки заключается в замене символов исходной информации, записанных в одном алфавите, символами из другого алфавита по определенному правилу. ... т.е. иходный алфавит латиница а в алфавите шифрования длина буквы одного символа равна 3 битам... Я так понимаю... Это сообщение отредактировал(а) Defoult - 7.10.2007, 00:02 |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Что-то мало для кодирования символов, тремя битами можно только 8 разных букв закодировать... Текст задания на бумаге написан? Может там 8 а не 3? ![]() -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Defoult,
Здесь не надо ассемблер: хватит и команд сдвига битов Делать так: 1. Берешь очередную букву 2. Находишь ее 3-битовый эквивалент 3. Записываешь эти три бита в младшие разряды выходной последовательности 4. сдвигаешь последовательность в выходном буфере на 3 бита влево ( оператор << ) Единственное, я бы взял буфер кратным 3 и 8 (в битовом представлении) 3 - чтобы влазили все шифрованные буквы, без запоминания не влезших разрядов 8 - чтобы получались целые байты, для записи в файл т.е. удобно буфер взять размером 3 * 8 = 24 бита = 3 байта обработка у тебя будет по 8 букв -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Я пацталом ![]()
![]() Defoult, а в чём проблема просто не позволять букве принимать значение больше 7? Делается очень просто операцией взятия остатка от деления( x &= 8; ). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
archimed7592,
может быть x &= 7 ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ну, о требованиях к скорости никаких предпосылок не было, но, тем не менее, лови плюс за свою любовь к асемблеру и к преждевременной оптимизации
![]() Вообще говоря, в преждевременной оптимизации(а в асемблере тем более) нет ничего хорошего, но, видимо тебе ставят настолько критичные к ресурсам задачи, что ты любую строчку кода пытаешься избавить от лишних тактов процессора ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Defoult |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
Это как????
но ведь мне надо зашифровать 26 символов |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Да хоть миллион символов...
Ну и шифруй себе на здоровье... В чём проблема то? Если я не забыл что такое моноалфавитная подстановка, то вот тебе пример. У тебя алфавит 01234567. Нужно заменить на алфавит 76543210.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
это если мы числа шифруем, а мне ведь надо текст на латинице зашифровать...
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Ты понимаешь что весь этот текст должен состоять из букв, которых можно пересчитать по пальцам, ибо у тебя не может быть больше 8-ми различных букв(по условию)?
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Defoult |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 16.9.2007 Где: Ростов-на-дону Репутация: нет Всего: нет |
Т.е. по условию у меня просто работа с числами???
А что тогда имел ввиду Kuvaldis???
Это сообщение отредактировал(а) Defoult - 7.10.2007, 22:06 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |