DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Конгруентні генератори. Регістри зсуву

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних технологій, автоматики та метрології
Факультет:
Факультет комп’ютерних наук
Кафедра:
Кафедра захисту інформації

Інформація про роботу

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Методи та засоби криптологічних перетворень
Група:
ІБ – 44
Коротко про документ

Про що ця робота

У роботі досліджено лінійні конгруентні генератори та регістри зсуву з лінійним зворотним зв'язком. Написано програми шифрування і розшифрування на мові C/C++ для регістру Фібоначчі.

У роботі розглядаються

  • Криптологічні перетворення
  • Псевдовипадкові послідовності
  • Лінійні конгруентні генератори
  • Регістри зсуву
  • Регістр Фібоначчі
  • Шифрування даних

Зміст і розділи

  1. Мета роботи
  2. Завдання
  3. Короткі теоретичні відомості
  4. Текст програми шифрування
  5. Результат виконання програми
  6. Блок-схема алгоритму програми шифрування
  7. Текст програми розшифрування
  8. Результат виконання програми розшифрування
  9. Блок-схема алгоритму програми розшифрування
  10. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів.
Викладачі:Викладач кафедри

Ключові поняття

регістр зсувурегістр Фібоначчішифруваннярозшифруванняполіном зворотного зв'язкуоперація XORпсевдовипадкові бітимоє C/C++криптологічні перетворення

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЗІ  Лабороторна робота №3 з курсу «Методи і засоби криптологічних перетворень» на тему: «Конгруентні генератори. Регістри зсуву» Мета роботи: ознайомитися з конгруентними генераторами псевдовипадкових послідовностей бітів, регістрами зсуву з зворотним зв’язком. Завдання Написати програму шифрування і розшифрування на мові програмування С/С++ для реалізації регістра зсуву з лінійним зворотним зв’язком на основі регістру Фібоначчі 8-го порядку. Коротокі теоретичні відомості Лінійним конгруентним генератором (ЛКГ) з параметрами (x0, a, c, N) називається програмний генератор, утворюючий псевдовипадкову послідовність x1,x2,…є А, A ={0,1,…,N-1} за допомогою рекурентного відношення:  (1.1) Параметри цього генератора (1.1) мають наступний зміст:  - початкове, або стартове, значення;  - ненульовий множник;  - приріст,  - модуль, рівний потужності алфавіту . Якщо приріст , то генератор (1.1) називається мультиплікативним конгруентним генератором (МКГ), а якщо , то змішаним конгруентним генератором (ЗКГ). Лінійним регістром зсуву з зворотним зв’язком (Linear Feedback Shift Register, скорочено РЗЛЗЗ) називається логічний прилад. РЗЛЗЗ складається з  комірок пам’яті, двійкові стани яких в момент часу  характеризуються значеннями . Виходи комірок пам’яті зв’язані не тільки послідовно один з одним, але й з суматорами в відповідності з коефіцієнтами передачі якщо , то значення  і-ї комірки передається на один із виходів і-го суматора; якщо , то така передача відсутня. Припускаємо . Стан РЗЛЗЗ в даний момент часу  задається двійковим n-вектор-стовпцем . Загальний вид рекурентного співвідношення, що визначає генератор Фібоначчі, задається рівнянням Рис.1.2. Регістр зсуву з лінійним зворотнім зв’язком  , (1.9) де - параметри генератора; елемент представляє собою двійковий k-вектор і дія виконується покомпонентно. РЗЛЗЗ в програмній реалізації працюють досить повільно, і швидкість можна збільшити застосуванням для програмування мови Асемблер замість Сі. Ще одне можливе рішення - запускати 16 РЗЛЗЗ (або 32, залежно від розміру слова в комп'ютері) у паралельному режимі. Така схема використовує масив слів, так що кожна бітова комірка регістру представлена окремим РЗЛЗЗ. При умові, що всі вони мають один і той же поліном зворотного зв'язку, така схема працює досить швидко. У загальному випадку найкращий спосіб оновлювати стани регістрів зсуву - це множити поточний стан на відповідні двійкові матриці. У даному прикладі розглянемо поліном вигляду:  Схема матиме такий вигляд: Текст програми шифрування #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <math.h> const size_t small_buff = 20; const size_t big_buff = 102400; void main() { clrscr(); char text[small_buff]; char bigtext[big_buff]; FILE *infile = fopen( "f:\\ot.txt", "r" ); size_t read_len = 0; size_t file_len = 0; while( read_len = fread(text, 1, small_buff, infile ) ) { memcpy( bigtext + file_len, text, read_len ); file_len += read_len; } int j,n,j1,i,n1,pzr;int k[10000];int kl[10000]; j1=0;int b[10000]; for(n=0;n<file_len*8;n++) {kl[n]=0; k[n]=0;b[n]=0;} /*zadaemo pochatkove znachennya registru*/ printf("vvedit chyslo="); scanf("%d",&pzr); for(n=7;n>=0;n--) { if (pzr -pow(2,n)<0) b[n]=0; else {b[n]=1;pzr = pzr-pow(2,n);} } /*generuemo poslidovnist psevdovypadkovyh bitiv*/ for(i=0;i<(file_len*8);i++) { b[i+8]=(((b[i+5])^b[i+4])^b[i+2]); } /*generuemo kluch*/ for(n=0;n<file_len;n++) { for(j=0;j<=7;j++,j1++) { {if (1==b[j1]) k[j]=pow(2,j); else continue;} kl[n]=kl[n]+k[j]; } } /*zdiusnuemo operaciu xor*/ for(n1=0;n1<file_len;n1++) { bigtext[n1]=bigtext[n1]^kl[n1];} FILE *outfile = fopen( "f:\\ct.txt", "w" ); fwrite( bigtext, 1, file_len, outfile ); fclose( infile ); fclose( outfile ); } Результат виконання програми yY•xJсѕ|moѓг¬Ф.ў: Блок-схема алгоритму програми шифрування  - + - Текст програми розшифрування #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <math.h> const size_t small_buff = 20; const size_t big_buff = 102400; void main() { clrscr(); char text[small_buff]; char bigtext[big_buff]; FILE *infile = fopen( "f:\\ct.txt", "r" ); size_t read_len = 0; size_t file_len = 0; while( read_len = fread(text, 1, small_buff, infile ) ) { memcpy( bigtext + file_len, text, read_len ); file_len += read_len; } int j,n,j1,pzr,i,n1;int k[10000];int kl[1000]; j1=0;int b[1000]; for(n=0;n<file_len*8;n++) {kl[n]=0; k[n]=0;b[n]=0;} printf("vvedit chyslo="); scanf("%d",& pzr); for(n=7;n>=0;n--) { if ((pzr-pow(2,n))<0) b[n]=0; else {b[n]=1; pzr = pzr -pow(2,n);} } for(i=0;i<(file_len*8);i++) { b[i+8]=(((b[i+5])^b[i+4])^b[i+2]); } for(n=0;n<file_len;n++) { for(j=0;j<=7;j++,j1++) { {if (1==b[j1]) k[j]=pow(2,j); else continue;} kl[n]=kl[n]+k[j]; } } for(n1=0;n1<file_len;n1++) { bigtext[n1]=bigtext[n1]^kl[n1];} FILE *outfile = fopen( "f:\\ot2.txt", "w" ); fwrite( bigtext, 1, file_len, outfile ); fclose( infile ); fclose( outfile ); } Результат виконання програми розшифрування sonce sxodyt na sxodi Блок-схема алгоритму програми розшифрування  - + - Висновок: на даній лабораторній роботі я ознайомилася з регістром зсуву Фібоначчі; якщо використовується елементна база з швидкою реалізацією зсуву, то слід звернутися до регістрів Фібоначчі, але в програмній реалізації цей регістр працює досить повільно; для зламу шифру використовують кореляційний аналіз.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!