IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Потоковое шифрование данных, C++ Builder 6
18192123
сообщение 16.02.2009 20:26
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Задание состоит в следующем:

Написать программу,
реализующую алгоритм потокового шифрования содержимого
текстового или двоичного файла. Программа должна запрашивать имя
входного и выходного файлов, представление образующего многочлена
и инициализирующее значение. Разрядность РСЛОС должна быть
меньше или равной максимальной разрядности стандартных
целочисленных типов данных (64 бит).

Вот на чём основываюсь (см. прикреплённый документ)..
Как я поняла, основная задача - сгенерировать поток ключей..для этого и применяется РСЛОС (регистр сдвига с линейной обратной связью)..
Есть некоторые вопросы по реализации:
Пусть пользователь ввёл представление образующего многочлена, инициализирующее значение..
Используя эту информацию нужно некоторый n-битный регистр сдвига обинициализировать (и первый вопрос: как это осуществить?? что за инициализирующее значение задавать??)..чтоб в дальнейшем получать новый бит, выполняя XOR над определёнными битами..

Объясните, пожалуйста!


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 24.02.2009 9:46
Сообщение #2


Гость






Цитата
уж лучше оставлю сдвиг в зависимости от вида полинома.
Нет уж, ты все-таки сделай так, как надо, а не так, как тебе хочется. А надо - именно сдвигать на sizeof(ShiftRegister)*8 - 1, вот тебе пример:
Wiki: Linear feedback shift register
Видишь, там напрочь нет 15 в полиноме (нет сдвига вправо на 15 бит), однако, чтобы получить тот самый единственный бит САМЫМ ЛЕВЫМ, производится сдвиг влево на 15 (при 16-битном размере регистра).

Цитата
перед этим мы результат XOR передвинули на количество позиций, определяемое разрядностью регистра сдвига...
Ну ты уж будь последовательна... Только что ты сказала, что тебе плевать на разрядность регистра, тебе удобнее передвигать результат XOR-ов в зависимости от первого элемента полинома... Так что все-таки ты решила?

Цитата
тогда для чего нужно сдвигать прежнее значение SR на 1 вправо (что это нам даст?) и что даёт OR c имеющимся в uL значением?
Если принять, что сдвиг производится в зависимости от разрядности, то... Смотри: Допустим, имеем 8-ми разрядный регистр (для простоты, принцип остается тем же для любой разрядности). Тогда:
SR = 00101011 (какое-то значение регистра)
Допустим, после преобразований и отсечения всех старших бит, получили uL = 00000001... Теперь сдвигаем это значение так, чтобы выделенный бит был старшим: uL = 10000000. И "складываем" (OR) с предыдущим значением SR, сдвинутым на 1 позицию вправо (т.е., с 00010101)... Что имеем в результате?
10000000
00010101
--------
10010101, то есть, старшим битом идет бит, только что вычисленный "как функция от остальных бит регистра", а остальные - просто сдвинутые исходные... А теперь сравни:
Цитата
Каждый раз, когда должен быть сгенерирован новый бит, все биты регистра сдвигаются на позицию вправо. Новый самый левый бит вычисляется как функция от остальных бит регистра, конкретный вид функции зависит от используемой обратной связи. Выходом регистра сдвига в каждом такте является 1 бит, часто это самый младший бит регистра.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
18192123   Потоковое шифрование данных   16.02.2009 20:26
volvo   Ну, так у тебя основное-то как раз и не написано.....   16.02.2009 22:11
18192123   Спасибо за ссылки! Насколько я поняла, с помо...   16.02.2009 23:26
volvo   Может, проще будет забрать сразу 8 бит регистра сд...   17.02.2009 0:16
18192123   Может, проще будет забрать сразу 8 бит регистра с...   17.02.2009 1:25
volvo   Вот это: unsigned char byte = 0; for(int i = 0; i ...   17.02.2009 1:38
18192123   Читаю символ из файла, потом идёт формирование бай...   17.02.2009 21:02
volvo   1) зачем понадобилось менять LFSR, да еще таким о...   17.02.2009 22:05
18192123   Спасибо за разъяснение!! Но один вопрос......   17.02.2009 22:29
volvo   Да, я упустил одну строчку... Добавил в программу ...   17.02.2009 22:44
18192123   В процессе тестирования появился ещё вопрос.. По и...   17.02.2009 23:04
volvo   Читаешь исходный файл без контроля ошибок. Добавь ...   17.02.2009 23:40
18192123   Большое спасибо!! Теперь хочу добиться т...   18.02.2009 0:37
volvo   У тебя тут 2 ошибки: 1) неравенство НЕстрогое, эле...   18.02.2009 1:31
18192123   Спасибо большое за разъяснение!!   18.02.2009 16:10
18192123   Здравствуйте! У меня вот такой вопрос: с помощ...   21.02.2009 0:25
volvo   Зачем здесь CreateProcess? Можно же открыть средст...   21.02.2009 1:09
18192123   В процессе тестирования наткнулась на ошибки... Ес...   23.02.2009 0:05
volvo   Ну, скорее всего в том, что надо открывать файлы, ...   23.02.2009 2:07
18192123   Ну, скорее всего в том, что надо открывать файлы,...   23.02.2009 11:10
volvo   Проблема в разрядности... unsigned long - это 32 б...   23.02.2009 12:07
18192123   Тогда уж надо использовать int64_t, там по крайн...   23.02.2009 12:26
volvo   Нет, в Билдере этот тип называется __int64... Меня...   23.02.2009 12:50
18192123   Нет, в Билдере этот тип называется __int64... Мен...   23.02.2009 13:54
volvo   Стоп, стоп... Если ты используешь __int64, то разр...   23.02.2009 14:08
18192123   Стоп, стоп... Если ты используешь __int64, то раз...   23.02.2009 20:57
volvo   По алгоритму так. Все дело - в том, что первый ...   23.02.2009 21:16
18192123   первый & используется в процессе составления ...   23.02.2009 21:28
volvo   Так... Это, похоже, неправильная функция. Правильн...   23.02.2009 22:28
18192123   // Сдвигаем этот бит вправо на _сколько нужно_ ...   23.02.2009 23:08
18192123   // И возвращаем последний бит этого нового SR к...   23.02.2009 23:29
18192123   int LFSR(TMemo *MemoPolinom) { // Оставляем толь...   24.02.2009 0:22
volvo   Влево, влево надо сдвигать... Код правильный, в ко...   23.02.2009 23:26
volvo   Это будет младший бит (LSB), почему левый? Ясно же...   23.02.2009 23:34
volvo   В статье написано, что . Ты об этом? Единственное,...   24.02.2009 1:12
18192123   В статье написано, что..... Ты об этом? Тогда дей...   24.02.2009 2:51
volvo   Нет уж, ты все-таки сделай так, как надо, а не так...   24.02.2009 9:46


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 13:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"