Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лабораторная работа №6




Лабораторная работа №5

«Хэш-функция. CRC»

Основные сведения.

Алгоритм CRC использует деление многосленов с остатком над конечным полем GF(2). Значение CRC определяется остатком от деления многочлена, задаваемого входными данными, на некий фиксированный порождающий многочлен.

Входным данным, представленным в виде последовательности a0,a1,a2,…,aM-1 сопоставляется многочлен

P(x)=a0+a1x+a2x2+…+aM-1xM-1.

Например, последовательности битов 01011010 соответствует многочлен (биты читаются справа налево):

P(x)=x6+x4+x3+x.

Значение CRC с порождающим многочленом G(x) степени N определяется как битовая последовательность длины N, представляющая многочлен R(x). Многочлен R(x) находится как остаток от деления многочлена P(x)×xN на многочлен G(x).

Рассмотри пример. Для входного сообщения 01011001 многочлен будет иметь вид:

P(x)=x6+x4+x3+1.

Выберем порождающий многочлен:

G(x)=x2+1.

То есть N =2. Значит, осуществляем деление многочлена

P(x)×x2= x8+x6+x5+x2.

на G(x):

x8+x6+x3+x2| x2+1

x8+x6 |x6+x+1

x3+x2

x3+x

x2+x

x2+1

x+1

Следовательно, R(x)=x+1, откуда CRC=11.

Во всех вычислениях производится сложение по модулю 2 (XOR), поэтому вычитание совпадает со сложением.

Рассмотрим один из возможных алгоритмов реализации CRC. Необходимо запрограммировать деление столбиком. Поясним, как это можно сделать на примере. Пусть порождающий многочлен представлен битовой строкой g=101, а входное сообщение имеет вид 10011101. Добавляем к входному сообщению три нуля, что соответствует умножению на x3. Получаем 10011101000. Берем старшие три бита и выполняем побитовый XOR с g: 100Å101=001. Дополняем следующими битами из входной последовательности, так чтобы было три знака 111 и выполняем побитовый XOR с g: 111Å101=010, и так далее

101Å101=000,

100Å101=001,

Остался один 0, его добавляем к последнему значению, получаем 10, которое меньше 101, оно и будет искомым CRC. Итак СRC=10.

Коллизией принято называть совпадения хэш-значений для различных входных сообщений.

 

Задание к лабораторной работе.

1. Реализуйте программу вычисляющую хэш-функцию CRC для сообщения длиной 1 байт с порождающим многочленом, заданным для вашего варианта.

2. Переберите все числа размером 1 байт и найдите все коллизии для вашей хэш-функции.

 

Варианты.

G(x)
5-1 1+x+x2
5-2 1+x+x3
5-3 1+x+x4
5-4 1+x+x5
5-5 1+x+x6
5-6 1+x2+x3
5-7 1+x2+x4
5-8 1+x2+x5
5-9 1+x2+x6
5-10 1+x+x2+x3
5-11 1+x+x2+x4
5-12 1+x+x2+x5
5-13 1+x+x2+x6
5-14 1+x3+x4
5-15 1+x3+x5
5-16 1+x3+x6
5-17 1+x+x3+x4
5-18 1+x+x3+x5
5-19 1+x+x3+x6
5-20 1+x2+x3+x4
5-21 1+x2+x3+x5
5-22 1+x2+x3+x6
5-23 1+x+x2+x3+x4
5-24 1+x+x2+x3+x5
5-25 1+x+x2+x3+x6

«Электронная цифровая подпись Эль-Гамаля»

 

Основные сведения.

Выбирается простое число p и число g, являющееся примитивным по mod p. Эти числа являются открытыми. В качестве закрытого ключа подписи выбирается случайное число x (0<x<p-1). В качестве открытого ключа проверки подписи публикуется число:

y=gx (mod p).

Алгоритм формирования подписи:

1. Для сообщения M вычисляется хэш-значение h=h(M) такое, что 1<h<p.

2. Выбирается случайное число k (1<k<p-1) взаимно простое с p-1.

3. Вычисляется:

r=gk mod p,

u=h-xr mod p-1,

s=k-1u mod p-1,

где k-1 – число, удовлетворяющее равенству

kk-1=1 mod p-1.

Подписанным документом является тройка (M,r,s).

 

Алгоритм проверки подписи:

1. Для сообщения M вычисляется хэш-значение h=h(M).

2. Проверяется верность равенства

yrrs=gh mod p.

 

Задание к лабораторной работе.

1. Реализуйте программу, формирующую электронную цифровую подпись по алгоритму Эль-Гамаля с параметрами, заданными в таблице. В качестве хэш-функции используйте CRC-код из лабораторной работы №5.

2. Реализуйте программу, проверяющую электронную цифровую подпись по алгоритму Эль-Гамаля с параметрами, заданными в таблице.

 


Варианты.

 

Вариант p g x
6-1      
6-2      
6-3      
6-4      
6-5      
6-6      
6-7      
6-8      
6-9      
6-10      
6-11      
6-12      
6-13      
6-14      
6-15      
6-16      
6-17      
6-18      
6-19      
6-20      
6-21      
6-22      
6-23      
6-24      
6-25      

 

 





Поделиться с друзьями:


Дата добавления: 2015-06-28; Просмотров: 393; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.