Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Шифр з автоключом

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Розглянемо ще один потоковий шифр, в якому кожна буква шифрується в залежності не тільки від її місця у відкритому тексті, але й від інших букв відкритого тексту. Такий шифр називається шифром з автоключем. Під відкритим текстом підписують ключове слово, а далі — сам відкритий текст (зсунутий на позицій вправо) і ці дві послідовності додають за: Ці рівності будуть вірними, коли збігається з… Читати ще >

Шифр з автоключом (реферат, курсова, диплом, контрольна)

шифрування криптоаналіз віженер автоключ.

Теоретичні відомості

Розглянемо ще один потоковий шифр, в якому кожна буква шифрується в залежності не тільки від її місця у відкритому тексті, але й від інших букв відкритого тексту. Такий шифр називається шифром з автоключем. Під відкритим текстом підписують ключове слово, а далі - сам відкритий текст (зсунутий на позицій вправо) і ці дві послідовності додають за :

При криптоаналізі спочатку знаходять довжину ключового слова. Якщо деякаграма двічі зустрічається у відкритому тексті на відстані 2, то в шифротексті на відстані також будуть однаковіграми. Наприклад:

Таким чином, аналізуючи відстані між однаковимиграмами у шифротексті, можна знайти. Для визначення першої букви ключового слова розглядають фрагмент шифротексту Перебирають значення і для кожного підраховують .

Ці рівності будуть вірними, коли збігається з істинним. При цьому частоти букв у зазначеній послідовності близькі до частот букв у відкритому тексті, а при невірному частоти згладжені. Так само знаходять і решту букв ключового слова.

Реалізація на C++

Позначення:

key — ключ шифрування;

msg — масив для повідомлення;

a — рядок для зашифрованого повідомлення;

b — рядок для розшифрованого повідомлення;

n — кількість букв алфавіту;

Тіло програми:

#include.

#include.

#include.

#include.

#include.

#include.

#include.

using namespace std;

int main ().

{.

char msg[100], key[100];

string a;

string b;

cout<<" Write a msg «<

cin>>msg;

cout<<" Think of a key" <

cin>>key;

int len=strlen (msg);

cout<<" Msg length: «<

int y=0;

for (int i=strlen (key); i.

{key[i]=msg[y];

y++;

}.

cout<<" New key: «<< key <

for (int i=0; i.

a+=char ((int (msg[i])+int (key[i])+127)%127);

cout<<" Code: «<

for (int i=0; i.

b+=char ((int (a[i])-int (key[i])+127)%127);

cout<<" DeCode: «<

getch ();

return 0;

}

Показати весь текст
Заповнити форму поточною роботою