Криптография. Сравнительный анализ алгоритмов симметричного шифрования
Особенности шифрования данных, предназначение шифрования. Понятие криптографии как науки, основные задачи. Анализ метода гаммирования, подстановки и метода перестановки. Симметрические методы шифрования с закрытым ключом: достоинства и недостатки.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 09.05.2012 |
Размер файла | 564,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
"Криптография. Сравнительный анализ алгоритмов симметричного шифрования"
криптография шифрование гаммирование
Введение
К сожалению, многие предприятия не пользуются преимуществами технологий шифрования, опасаясь, что это слишком сложно. В самом деле, шифрование особо ценных данных не намного сложнее, чем запуск антивирусного сканера или резервного копирования данных.
Шифрование данных - это лишь один из важных элементов системы информационной безопасности, но в отдельности совершенно не достаточный. Система шифрования лишь тогда эффективна, если грамотно настроены системы разграничения доступа, контроля целостности операционной среды, средств обнаружения проникновений, антивирусной и антитроянской защиты и т.д.
Последствия потери данных:
- Отправка серверов или жестких дисков в ремонт;
- Перевозка компьютеров из одного офиса в другой, например, при переезде;
- Утилизация компьютеров, серверов, жестких дисков и лент;
- Хранение магнитных лент в специальном депозитарии (off-site storage);
- Перевозка ленты, например, в депозитарий;
- Кража или потеря жестких дисков или лент. \
Зачем нужно шифрование?
Снижение риска раскрытия конфиденциальных данных из-за так называемого "человеческого фактора", особенно проявляющегося при возникновении экстремальных ситуаций, когда злоумышленники могут получить физический доступ к серверам или к зашифрованным дискам, завладеть администраторским ключом eToken и узнать его PIN-код;
Данные на защищенных дисках всегда хранятся в зашифрованном виде. Поэтому использовать их, даже сделав копию, например, при транспортировке сервера, ремонте, краже или изъятии дисков, невозможно;
Высочайшая надежность - в процессе шифрования реализована защита данных от сбоев, в том числе и в результате сбоев питания компьютера;
Получить доступ к данным и расшифровать их невозможно, даже если под принуждением попробуют заставить это сделать администратора или владельцев. Система уничтожат ключи шифрования дисков по сигналу "тревога", полученному при нажатии "красной кнопки" или от датчиков, обнаруживших несанкционированное проникновение в серверную комнату или открывание серверной стойки.
1. Криптография. Сравнительный анализ алгоритмов симметричного шифрования
Криптограмфия (от др.-греч. ксхрфьт -- скрытый и гсЬцщ -- пишу) -- наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним) и аутентичности (целостности и подлинности авторства, а также невозможности отказа от авторства) информации.
Изначально криптография изучала методы шифрования информации -- обратимого преобразования открытого (исходного) текста на основе секретного алгоритма и/или ключа в шифрованный текст (шифротекст). Традиционная криптография образует раздел симметричных криптосистем, в которых зашифрование и расшифрование проводится с использованием одного и того же секретного ключа. Помимо этого раздела современная криптография включает в себя асимметричные криптосистемы, системы электронной цифровой подписи (ЭЦП), хеш-функции, управление ключами, получение скрытой информации, квантовую криптографию.
Криптография не занимается: защитой от обмана, подкупа или шантажа законных абонентов, кражи ключей и других угроз информации, возникающих в защищенных системах передачи данных.
Известны два вида шифрования - традиционное (оно же симметрическое) и "открытое шифрование" (асимметрическое). При традиционном шифровании законный пользователь с помощью некоторого конечного автомата (шифратора) преобразует последовательность, называемую открытой информацией, в шифрованную информацию. Шифратор зависит от параметра (ключа), известного пользователю. Законные пользователи, которым предназначена информации, осуществляют расшифрование информации также с помощью некоторого конечного автомата.. В рассматриваемом случае каждый законный пользователь изначально обладает как преобразованием, так и преобразованием, в то время как незаконный пользователь не имеет ключа, т. е. не полностью знает преобразования и. В качестве ключа обычно используется начальное состояние автомата либо его функция перехода.
Симметричные алгоритмы шифрования (или криптография с секретными ключами) основаны на том, что отправитель и получатель информации используют один и тот же ключ. Этот ключ должен храниться в тайне и передаваться способом, исключающим его перехват. Рассмотрим общую схему симметричной, или традиционной, криптографии.
Рисунок 2.1 Общая схема симметричного шифрования
В процессе шифрования используется определенный алгоритм шифрования, на вход которому подаются исходное незашифрованное сообщение, называемое также plaintext, и ключ. Выходом алгоритма является зашифрованное сообщение, называемое также ciphertext. Ключ является значением, не зависящим от шифруемого сообщения. Изменение ключа должно приводить к изменению зашифрованного сообщения.
Зашифрованное сообщение передается получателю. Получатель преобразует зашифрованное сообщение в исходное незашифрованное сообщение с помощью алгоритма дешифрования и того же самого ключа, который использовался при шифровании, или ключа, легко получаемого из ключа шифрования.
Незашифрованное сообщение будем обозначать P или M, от слов plaintext и message. Зашифрованное сообщение будем обозначать С, от слова ciphertext.
Безопасность, обеспечиваемая традиционной криптографией, зависит от нескольких факторов.
Во-первых, криптографический алгоритм должен быть достаточно сильным, чтобы передаваемое зашифрованное сообщение невозможно было расшифровать без ключа, используя только различные статистические закономерности зашифрованного сообщения или какие-либо другие способы его анализа.
Во-вторых, безопасность передаваемого сообщения должна зависеть от секретности ключа, но не от секретности алгоритма. Алгоритм должен быть проанализирован специалистами, чтобы исключить наличие слабых мест, при которых плохо скрыта взаимосвязь между незашифрованным и зашифрованным сообщениями. К тому же при выполнении этого условия производители могут создавать дешевые аппаратные чипы и свободно распространяемые программы, реализующие данный алгоритм шифрования.
В-третьих, алгоритм должен быть таким, чтобы нельзя было узнать ключ, даже зная достаточно много пар (зашифрованное сообщение, незашифрованное сообщение), полученных при шифровании с использованием данного ключа.
Классическим примером таких алгоритмов являются симметричные криптографические алгоритмы, перечисленные ниже:
- Простая подстановка
- Одиночная перестановка по ключу
- Гаммирование
1.1 Простая перестановка
При шифровании простой перестановкой ключевое слово с неповторяющимися символами или цифровой ключ. Число колонок в таблице задаётся количеством символов в ключе, а число строк может быть фиксировано или может задаваться длиной сообщения. Шифруемый текст записывается последовательными строками под символами ключа. Для заполнения пустых клеток (если объём текста меньше ёмкости таблицы) можно использовать любые символы. Затем текст выписывается колонками в той последовательности, в которой располагаются в алфавите буквы ключа или в порядке следования цифр, если ключ цифровой. В качестве примера рассмотрим шифрование сообщения: «БУДЬТЕ ОСТОРОЖНЫ С ПРЕДСТАВИТЕЛЕМ ФИРМЫ «СПЕКТР». Применим цифровой ключ - 5 1 8 3 7 4 6 2. Выписывая текст по колонкам, получаем абракадабру: УОРТМССВИТЬОДЛСЕНТМЕБТПИРРОЫАФКТЖСЕПДРЕЕЫ.
Расшифрование выполняется в следующем порядке. Подсчитываем число знаков в зашифрованном тексте и делим на число знаков ключа (41: 8=5 и 1 знак в остатке). Под знаками ключа в соответствующей последовательности записываем вертикально (колонками) символы зашифрованного текста в определенном выше количестве. В каждой колонке по 5 символов, а в одной (первой слева) - 6 символов (5+1 буква в остатке). По строкам таблицы (горизонтально) читаем исходный текст. Выше, в «Истории тайнописи», упоминается шифр называемый в некоторых книгах по криптографии «Сцитала» (наматывание ленты на жезл). Это не что иное, как перестановка по таблице с простым ключом - 1 2 3 4 …
1.2 Подстановка
Каждая из 33 букв русского алфавита заменяется на другую букву того же алфавита (моноалфавитная подстановка). Такой шифр (одноалфавитная замена) имеет низкую (временную) стойкость, т. к. зашифрованный (закрытый) текст имеет те же статистические характеристики, что и исходный (открытый) - каждая буква имеет свою частоту появления. Поэтому использовать этот метод целесообразно для шифрования только короткого текста.
Для дополнительной скрытности можно повторно шифровать сообщение, которое уже было зашифровано. Этот способ известен под названием двойная перестановка. Для этого размер второй таблицы подбирают так, чтобы длины ее строк и столбцов были другие, чем в первой таблице. Лучше всего, если они будут взаимно простыми. Кроме того, в первой таблице можно переставлять столбцы, а во второй строки. Наконец, можно заполнять таблицу зигзагом, змейкой, по спирали или каким-то другим способом. Такие способы заполнения таблицы если и не усиливают стойкость шифра, то делают процесс шифрования гораздо более занимательным.
1.3 Гаммирование
Метод гаммирования состоит в том, что символы шифруемого текста последовательно складываются с символами некоторой специальной последовательности, называемой гаммой.
В потоковых криптосистемах на основе ключа вырабатывается гамма, которая затем накладывается на текст сообщения. Наложение осуществляется посредством сложения по модулю 2 (операции XOR).
Зашифрование производится следующим образом:
ci = mi ki для i=1,2,3...(1.1)
где ci - знак шифротекста;
mi - знак открытого текста;
ki - знак ключевой последовательности;
- сложение по модулю 2.
Поскольку повторное применение операции XOR восстанавливает первоначальное значение, расшифрование производится повторным наложением гаммы:
mi = ci ki для i=1,2,3...(1.2)
Преобразование текста осуществляется потоком по мере выработки гаммы. Поэтому поточные шифры подходят для шифрования непрерывных потоков данных - голоса, видео и т.д.
Принцип шифрования гаммированием заключается в генерации бесконечного ключа (гаммы шифра) с помощью датчика псевдослучайных чисел (ПСЧ) и наложении полученной гаммы на исходные данные обратимым образом. Процесс расшифрования данных сводится к повторной генерации гаммы шифра при известном ключе и наложении такой гаммы на зашифрованные данные.
Если период гаммы превышает длину всего зашифрованного текста и неизвестна никакая часть исходного текста, то зашифрованный текст можно раскрыть только путем прямого перебора.
1.4 Сравнительный анализ методов шифрования
Сравнительный анализ методов шифрования симметрическим методом изложена в таблице 1.1.
После проведенного анализа было выявлено, что шифрованием методом простой подставки совершенно не эффективные, так как его можно расшифровать после несложного анализа. Алгоритм одиночной перестановки гораздо надежнее подставки, но если ключ используется несколько раз, то его можно проанализировать и взломать. Из трех проанализированных методов, алгоритм методом гаммирования является самым эффективным.
Но у всех методов есть общий недостаток отправитель и получатель должны некоторым тайным образом получить копии секретного ключа и сохранять их в тайне.
Таблица 1.1 Сравнительный анализ алгоритмов симметричного шифрования
2. Практический раздел
2.1 Идентификация пользователя
Идентификация пользователя - распознавание пользователя компьютерной системы на основании ранее заданного описания. Идентификация имеет целью определение полномочий пользователя (права доступа к данным и выбора режима их использования).
Для идентификация пользователя по серийному номеру флеш-карты понадобилось 2 процедуры:
GetDriveType - определяет и возвращает тип носителя;
GetVolumeInformation - определяет информацию о носителе, среди которой содержится серийный номер.
Листинг модуля для идентификация пользователя:
procedure TParol.InputClick(Sender: TObject);
var
SerialNum,dtyp:DWORD;
a,b:DWORD;
Buffer,disk :Array[0..255]of char;
Nomer: cardinal;
begin
dtyp:=GetDriveType('G:\');
if dtyp <> DRIVE_REMOVABLE then
begin
ShowMessage('Диск не обнаружен. Вход не выполнен!');
exit;
end;
GetVolumeInformation(
'G:\',
Buffer,
sizeof(Buffer),
@SerialNum,
a, b,
nil, 0);
nomer:=3830754817;
if SerialNum = nomer then //сравниваем серийный номер
begin
ShowMessage('Вход выполнен!!') ;
Main.Show();
Parol.Hide();
end
else
ShowMessage('Вход не выполнен!!');
end;
2.2 Симметричное шифрование
Симметричное шифрование - посторонним лицам может быть известен алгоритм шифрования, но неизвестна небольшая порция секретной информации -- ключа, одинакового для отправителя и получателя сообщения.
2.2.1 Метод подстановки
В шифре простой подстановки производится замена каждой буквы сообщения некоторым заранее определенным символом (обычно это также буква). В данном шифре ключом является просто перестановка алфавита (это верно в том случае, если буквы заменяются буквами).
Как можно понять из определения, данный шифр является довольно простым. Перейдем к примеру, показывающему одну из возможных его реализаций.
Программа будет шифровать и дешифровать только русский текст, оставляя неизменным все остальное.
Рисунок 2.1 Экранная форма - Шифрование метом подстановки
Листинг алгоритма шифрования методом подстановки:
procedure TMain.Shifrovat1Click(Sender: TObject);
var
i, j, q: integer;
str1, str2: string;
mas: array [1..256, 1..2] of char;
begin
mas[1,1]:='1'; mas[1,2]:='я';
mas[2,1]:='2'; mas[2,2]:='ч';
mas[3,1]:='3'; mas[3,2]:='с';
mas[4,1]:='4'; mas[4,2]:='м';
mas[5,1]:='5'; mas[5,2]:='и';
mas[6,1]:='6'; mas[6,2]:='т';
mas[7,1]:='7'; mas[7,2]:='ь';
mas[8,1]:='8'; mas[8,2]:='б';
mas[9,1]:='9'; mas[9,2]:='ю';
mas[10,1]:='0'; mas[10,2]:='.';
mas[11,1]:='-'; mas[11,2]:='Я';
mas[12,1]:='='; mas[12,2]:='Ч';
mas[13,1]:='!'; mas[13,2]:='С';
mas[14,1]:='"'; mas[14,2]:='М';
mas[15,1]:='№'; mas[15,2]:='И';
mas[16,1]:=';'; mas[16,2]:='Т';
mas[17,1]:='%'; mas[17,2]:='Ь';
mas[18,1]:=':'; mas[18,2]:='Б';
mas[19,1]:='?'; mas[19,2]:='Ю';
mas[20,1]:='*'; mas[20,2]:='.';
mas[21,1]:='('; mas[21,2]:='Ф';
mas[22,1]:=')'; mas[22,2]:='Ы';
mas[23,1]:='_'; mas[23,2]:='В';
mas[24,1]:='+'; mas[24,2]:='А';
mas[25,1]:='Й'; mas[25,2]:='П';
mas[26,1]:='Ц'; mas[26,2]:='Р';
mas[27,1]:='У'; mas[27,2]:='О';
mas[28,1]:='К'; mas[28,2]:='Л';
mas[29,1]:='Е'; mas[29,2]:='Д';
mas[30,1]:='Н'; mas[30,2]:='Ж';
mas[31,1]:='Г'; mas[31,2]:='Э';
mas[32,1]:='Ш'; mas[32,2]:='\';
mas[33,1]:='Щ'; mas[33,2]:='д';
mas[34,1]:='З'; mas[34,2]:='э';
mas[35,1]:='Х'; mas[35,2]:='ж';
mas[36,1]:='Ъ'; mas[36,2]:='л';
mas[37,1]:='Ф'; mas[37,2]:='о';
mas[38,1]:='Ы'; mas[38,2]:='р';
mas[39,1]:='В'; mas[39,2]:='п';
mas[40,1]:='А'; mas[40,2]:='а';
mas[41,1]:='П'; mas[41,2]:='в';
mas[42,1]:='Р'; mas[42,2]:='ы';
mas[43,1]:='О'; mas[43,2]:='ф';
mas[44,1]:='Л'; mas[44,2]:='й';
mas[45,1]:='Д'; mas[45,2]:='ц';
mas[46,1]:='Ж'; mas[46,2]:='у';
mas[47,1]:='Э'; mas[47,2]:='к';
mas[48,1]:='\'; mas[48,2]:='е';
mas[49,1]:='Я'; mas[49,2]:='н';
mas[50,1]:='Ч'; mas[50,2]:='г';
mas[51,1]:='С'; mas[51,2]:='ш';
mas[52,1]:='М'; mas[52,2]:='щ';
mas[53,1]:='И'; mas[53,2]:='з';
mas[54,1]:='Т'; mas[54,2]:='х';
mas[55,1]:='Ь'; mas[55,2]:='ъ';
mas[56,1]:='Б'; mas[56,2]:='Ъ';
mas[57,1]:='Ю'; mas[57,2]:='Х';
mas[58,1]:='.'; mas[58,2]:='З';
mas[59,1]:='й'; mas[59,2]:='Щ';
mas[60,1]:='ц'; mas[60,2]:='Ш';
mas[61,1]:='у'; mas[61,2]:='Г';
mas[62,1]:='к'; mas[62,2]:='Н';
mas[63,1]:='е'; mas[63,2]:='Е';
mas[64,1]:='н'; mas[64,2]:='К';
mas[65,1]:='г'; mas[65,2]:='У';
mas[66,1]:='ш'; mas[66,2]:='Ц';
mas[67,1]:='щ'; mas[67,2]:='Й';
mas[68,1]:='з'; mas[68,2]:='1';
mas[69,1]:='х'; mas[69,2]:='2';
mas[70,1]:='ъ'; mas[70,2]:='3';
mas[71,1]:='ф'; mas[71,2]:='4';
mas[72,1]:='ы'; mas[72,2]:='5';
mas[73,1]:='в'; mas[73,2]:='6';
mas[74,1]:='а'; mas[74,2]:='7';
mas[75,1]:='п'; mas[75,2]:='8';
mas[76,1]:='р'; mas[76,2]:='9';
mas[77,1]:='о'; mas[77,2]:='0';
mas[78,1]:='л'; mas[78,2]:='-';
mas[79,1]:='д'; mas[79,2]:='=';
mas[80,1]:='ж'; mas[80,2]:='!';
mas[81,1]:='э'; mas[81,2]:='"';
mas[82,1]:='\'; mas[82,2]:='№';
mas[83,1]:='я'; mas[83,2]:=';';
mas[84,1]:='ч'; mas[84,2]:='%';
mas[85,1]:='с'; mas[85,2]:=':';
mas[86,1]:='м'; mas[86,2]:='?';
mas[87,1]:='и'; mas[87,2]:='*';
mas[88,1]:='т'; mas[88,2]:='(';
mas[89,1]:='ь'; mas[89,2]:=')';
mas[90,1]:='б'; mas[90,2]:='_';
mas[91,1]:='ю'; mas[91,2]:='+';
mas[92,1]:='.'; mas[92,2]:=',';
mas[93,1]:=','; mas[93,2]:='ё';
mas[94,1]:='ё'; mas[94,2]:=']';
mas[95,1]:=' '; mas[95,2]:='|';
result1.Clear();
for i:=0 to text1.Lines.Count-1 do
begin
str2:='';
str1:= Text1.Lines[i];
for j:=1 to length(text1.Lines[i]) do
for q:=1 to 95 do
if str1[j]=mas[q,1] then
begin
str2:=str2 + mas[q,2];
break;
end;
Result1.Lines.Add(str2);
end;
end;
2.2.2 Метод перестановки
При шифровании простой перестановкой ключевое слово с неповторяющимися символами или цифровой ключ. Число колонок в таблице задаётся количеством символов в ключе, а число строк может быть фиксировано или может задаваться длиной сообщения. Шифруемый текст записывается последовательными строками под символами ключа. Для заполнения пустых клеток (если объём текста меньше ёмкости таблицы) можно использовать любые символы. Затем текст выписывается колонками в той последовательности, в которой располагаются в алфавите буквы ключа или в порядке следования цифр, если ключ цифровой.
Рисунок 2.2 Экранная форма - Шифрование метом перестановки
Листинг алгоритма шифрования методом перестановки:
procedure TMain.Button1Click(Sender: TObject);
var
k: array [1..20] of integer;
str1, str2 : string;
i, j, kol, x, q: integer;
begin
kol:= length(Kluch2.Text);
for i := 1 to kol do
k[i] := StrToInt(Copy(Kluch2.Text, i, 1));
Result2.Clear();
for i := 0 to Text2.Lines.Count - 1 do
begin
str2:='';
str1 := Text2.Lines[i];
x:=length(str1) mod kol;
if x>0 then
for j:=1 to kol-x do
str1:=str1+' ';
for j:=1 to (length(str1) div kol) do
for q:=1 to kol do
str2 := str2+ copy(str1,k[q]+(kol*(j-1)),1);
Result2.Lines.Add(str2);
end;
end;
2.3 Шифрование с открытым ключом
Алгоритм RSA - (буквенная аббревиатура от фамилий Rivest, Shamir и Adleman) -- криптографический алгоритм с открытым ключом.
RSA стал первым алгоритмом такого типа, пригодным и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений.
Листинг алгоритма изложен в приложении.
Рисунок 2.3. Экранная форма - шифрование алгоритмом RSA
2.4 Постановка и верификация ЭЦП
Электромнная цифровая подпись (ЭП) -- реквизит электронного документа, позволяющий установить отсутствие искажения информации в электронном документе с момента формирования ЭП и проверить принадлежность подписи владельцу сертификата ключа ЭП. Значение реквизита получается в результате криптографического преобразования информации с использованием закрытого ключа ЭП.
Рисунок 2.4. Экранная форма - постановка ЭЦП
Листинг алгоритма постановки ЭЦП:
procedure TMain.Button6Click(Sender: TObject);
var
s: string;
n, p, q, tmp, i,crc, e : longword;
begin
s:=edit4.text;
n:=Length(S);
CRC:=ord(s[1]);
for i:=2 to N do
CRC:=CRC xor ord(s[i]);
Randomize;
p:=Random(100);
q:=Random(100);
While not p_number(p) do dec(p);
While not p_number(q) do dec(q);
edit1.Text:=IntToStr(p);
edit2.text:=IntToStr(q);
n := p* q;
tmp:=(p-1)*(q-1);
for i:=2 to tmp-1 do
if HOD(tmp,i)=1 then break;
e:=i;
for i:=1 to n do
if (i*e) mod ((p-1)*(q-1))=1 then
break;
edit3.Text:=IntToStr(i);
edit5.Text :='';
FMes := Encrypt(IntToStr(crc), e, n);
for i := 0 to High(FMes) do
edit5.Text := edit5.Text + IntToStr(FMes[i]);
end;
2.5 Алгоритм подсчета СРС
Рисунок 2.5. Экранная форма - Алгоритм подсчета СРС
Листинг алгоритма подсчета СРС:
procedure TMain.Button5Click(Sender: TObject);
var
crc,n , i: integer;
s: string;
begin
s:=edtText.text;
n:=Length(S);
CRC:=ord(s[1]);
for i:=2 to N do
CRC:=CRC xor ord(s[i]);
EdtResult.Text := IntToStr(CRC);
end;
Заключение
В практической части необходимо было путем сравнительного анализа выявить достоинства и недостатки симметрических методов шифрования с закрытым ключом.
После проведенного анализа было выявлено, что все методы симметрических методов шифрования с закрытым ключом недостаточно стойкие к расшифровывании. И так, шифрованием методом простой подставки совершенно не эффективные, так как его можно расшифровать после несложного анализа. Алгоритм одиночной перестановки гораздо надежнее подставки, но если ключ используется несколько раз, то его можно проанализировать и взломать. Из трех проанализированных методов, алгоритм методом гаммирования является самым эффективным.
Но у всех методов есть общий недостаток отправитель и получатель должны некоторым тайным образом получить копии секретного ключа и сохранять их в тайне.
В практической части была поставлена задача разработки приложения, в котором реализовать идентификацию пользователя по серийному, алгоритмы шифрования с закрытым и открытым ключом, постановку ЭЦП.
Приложение было разработано с помощью среды программирования Delphi 7, алгоритмы были проверены и отлажены.
Список использованной литературы
1.Защита информации в вычислительных системах./ Сборник. - М.: Знание,1982.
2.Хофман Л. Дж. Современные методы защиты информации. - М.: Советское радио, 1980.
3.Дружинин Г.В. Сергеева И.В. Качество информации. - М.: Радио и связь, 1990.
Приложение
Листинг алгоритма RSA
//Значение бита в двойном слове (32бита)
function Bit(Value, n: Integer): Boolean;
asm
bt eax, edx
setc al
and eax, 0FFh
end;
Function p_number(X: LongInt): boolean;
var i: LongInt;
Begin
if x>1 then
begin
Result:=false;
for i:=2 to trunc(sqrt(x)) do
if x mod i=0 then Exit;
Result:=true;
end
else
Result:=false;
end;
Function HOD(a, b: int64): int64;
var r: int64;
begin
if ((a=0)or(b=0)) then
begin
Result:=abs(a+b);
exit;
end;
r:=a-b*(a div b);
while r<>0 do begin
a:=b;
b:=r;
r:=a-b*(a div b);
end;
Result:=b;
end;
function FastPower(a, b, n: integer): integer;
var i: integer;
ai: extended;
begin
ai := a;
for I := Trunc(log2(b)) - 1 downto 0 do
if Bit(b, i) then ai := Round(sqr(ai) * a) mod n else ai := Round(sqr(ai)) mod n;
result := Round(ai);
end;
function Encrypt(s: string; e, n: integer): TIncodeMes;
var I: Integer;
begin
SetLength(result, length(s));
for I := 0 to Length(s) - 1 do
if s[i+1]<>'0' then
result[i] := FastPower(ord(s[i + 1]), e, n);
end;
function Decrypt(s: array of integer; e, n: integer): string;
var i: Integer;
begin
SetLength(Result, Length(s));
for I := 0 to Length(s) - 1 do
if s[i+1]<>0 then
result[i + 1] := chr(FastPower(s[i], e, n))
end;
procedure TMain.Button3Click(Sender: TObject);
var
n, p, q, tmp, i,e : longword;
begin
Randomize;
p:=Random(100);
q:=Random(100);
While not p_number(p) do dec(p);
While not p_number(q) do dec(q);
edtP.Text:=IntToStr(p);
edtQ.text:=IntToStr(q);
n := p* q;
tmp:=(p-1)*(q-1);
for i:=2 to tmp-1 do
if HOD(tmp,i)=1 then break; e:=i;
edtE.Text:=IntToStr(i);
for i:=1 to n do
if (i*e) mod ((p-1)*(q-1))=1 then
break;
edtD.Text:=IntToStr(i);
Memo2.Clear;
FMes := Encrypt(Memo1.Lines.Text, e, n);
for i := 0 to High(FMes) do
Memo2.Lines.Append(IntToStr(FMes[i])); end;
Размещено на Allbest.ru
Подобные документы
Криптография и шифрование. Симметричные и асимметричные криптосистемы. Основные современные методы шифрования. Алгоритмы шифрования: замены (подстановки), перестановки, гаммирования. Комбинированные методы шифрования. Программные шифраторы.
реферат [57,7 K], добавлен 24.05.2005Появление шифров, история эволюции криптографии. Способ приложения знаний особенностей естественного текста для нужд шифрования. Критерии определения естественности. Способ построения алгоритмов симметричного шифрования. Криптосистема с открытым ключом.
реферат [452,2 K], добавлен 31.05.2013История криптографии. Сравнение алгоритмов шифрования, применение в операционной системе. Анализ продуктов в области пользовательского шифрования. Включение и отключение шифрования на эллиптических кривых. Использование хеш-функции. Электронная подпись.
курсовая работа [492,6 K], добавлен 18.09.2016История появления симметричных алгоритмов шифрования. Роль симметричного ключа в обеспечении степени секретности сообщения. Диффузия и конфузия как способы преобразования бит данных. Алгоритмы шифрования DES и IDEA, их основные достоинства и недостатки.
лабораторная работа [335,9 K], добавлен 18.03.2013Комбинированное использование симметричного и асимметричного шифрования. Зависимость между открытым и закрытым ключами. Основные недостатки симметричного шифрования. Схема двухстороннего конфиденциального обмена. Концепция шифрования по алгоритму DES.
презентация [1,4 M], добавлен 20.12.2012История алгоритмов симметричного шифрования (шифрования с закрытым ключом). Стандарты на криптографические алгоритмы. Датчики случайных чисел, создание ключей. Сфера интересов криптоанализа. Системы электронной подписи. Обратное преобразование информации.
краткое изложение [26,3 K], добавлен 12.06.2013Понятие и значение информационной безопасности, принципы и методы ее обеспечения. Главные понятия и определения криптографии. Модели симметричного шифрования данных и их функциональные особенности. Криптосистема DES как одна из современных и популярных.
курсовая работа [326,8 K], добавлен 09.06.2014Основные методы криптографической защиты информации. Система шифрования Цезаря числовым ключом. Алгоритмы двойных перестановок и магические квадраты. Схема шифрования Эль Гамаля. Метод одиночной перестановки по ключу. Криптосистема шифрования данных RSA.
лабораторная работа [24,3 K], добавлен 20.02.2014История развития криптографии, ее основные понятия. Простейший прием дешифровки сообщения. Основные методы и способы шифрования, современный криптографический анализ. Перспективы развития криптографии. Создание легкого для запоминания и надежного пароля.
курсовая работа [3,9 M], добавлен 18.12.2011Основные способы криптографии, история ее развития. Принцип шифрования заменой символов, полиалфавитной подстановкой и методом перестановки. Симметричный алгоритм шифрования (DES). Открытое распределение ключей. Шифры Ривеста-Шамира-Алдемана и Эль Гамаля.
реферат [39,3 K], добавлен 22.11.2013