Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Шифр множення матриць.






Шифр множення матриць використовує перетворення Y=C·X, де X – вектор-стовпчик числових кодів знаків відкритого тексту, C – квадратна ключ-матриця, Y – вектор-стовпчик числових символів кріптограми.

Даний шифр є блоковим. Розмір блоку відкритого тексту співпадає з порядком n матриці C, який має бути не меншим двох, тобто n ³ 2. Внаслідок перетворення утворюється блок кріптограми такого ж розміру. Зрозуміло, що чим більший порядок матриці C, тим складніше кріптографічне перетворення і тим більша стійкість шифру.

Наприклад, для алфавіту “АБВГДЕЖЗИК” обсягом m=10 таблиця числових кодів знаків

має наступний вигляд:

Виберемо ключем квадратну матрицю

Зашифруємо відкритий текст “КВАД”, для якого відповідна послідовність числових кодів знаків має вигляд (9, 2, 0, 4):

Враховуючи, що величина елементів ключ-матриці та числових кодів знаків така, що не приводить до появи більш як двозначних символів, отриману кріптограму можна представити у вигляді “20420412”.

Для дешифрування кріптограм застосовується перетворення обернена ключ-матриця:

Отримуємо дешифровану послідовність кодів знаків відкритого тексту: (9, 2, 0, 4) тобто “КВАД”.

 

 

Шифр скалярних добутків

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

Кожний знак відкритого тексту si представимо у вигляді n-розрядного двійкового числа

Тепер кожний символ кріптограми можна отримувати шляхом обчислення скалярного добутку si× K.

Побудуємо, наприклад, шифрувальну таблицю для алфавіту “ABCDEFGH” обсягом m=8.При алфавіті указаного обсягу для кодування кожного знаку достатньо трьох двійкових розрядів.

Оскільки кожний знак відкритого тексту представлено у вигляді трьохрозрядного двійкового числа, то і ключ-вектор теж виберемо трьохкоординатним, наприклад, K = {5, 1, 3}.

Для такого ключ-вектора маємо наступні результати обчислень:

Остаточно шифрувальна таблиця набуває наступного вигляду:

У відповідності з наведеним прикладом шифрувальної таблиці, відкритий текст GEAD (двійковий код 110100000011) шифрується як “6504”. Дешифрування кріптограм здійснюється за цією ж шифрувальною таблицею.

 

Афінна система моноалфавітної заміни

Афінна система моноалфавітної заміни вигідно відрізняється від замін Цезаря. Вона дозволяє добитись суттєвої відмінності порядку слідування знаків вторинного алфавіту у порівнянні з первинним.

Афінна система моноалфавітної заміни використовує модулярну арифметику. Її загальна формула має вигляд

· jx – порядковий номер знака відкритого тексту в алфавіті,

· jy – порядковий номер знака кріптограми в алфавіті,

· m – обсяг алфавіту,

· a, b – ключ заміни, який являє собою пару цілих числа, що задовольняють умовам

0 ≤ a < m і 0 ≤ b < m.

Для побудови шифрувальної таблиці цю формулу застосовують послідовно до кожного знаку алфавіту. При цьому указане кріптографічне перетворення є взаємно однозначним на даному алфавіті тільки при умові, що числа a і m – взаємно прості, тобто їх найбільший спільний дільник рівний одиниці НСД(a, m) = 1.

Побудуємо, наприклад, шифрувальну таблицю для алфавіту “АБВГДЕЖЗИК” обсягом m=10, використовуючи ключ (a, b) = (7, 2). При цьому всі указані вище умови виконуються, в тому числі НСД(7, 10) = 1.

Шифрувальна таблиця набуває наступного вигляду:

У відповідності з наведеним прикладом шифрувальної таблиці, відкритий текст ЖАЖДА шифрується як ДВДАВ. Дешифрування кріптограм здійснюється за цією ж шифрувальною таблицею.

 

Шифр Вижинера використовує модулярну арифметику.

У загальному випадку застосування шифру Вижинера полягає в наступному. Розглянемо

алфавіт відкритого тексту A=(a0, a1, a2,..., am-1), що містить m знаків. Розглянемо ключ

K=(k0, k1, k2,..., kn-1), знаки якого випадковим способом вибрано із алфавіту A. Довжина ключа n

рівна довжині відкритого тексту X=(x0, x1, x2,..., xn-1). Накладемо ключ на відкритий текст.

Розглянемо деякий знак xp, p=0, 1, 2,..., n-1 відкритого тексту X. Він має порядковий номер i в

алфавіті A. Розглянемо також відповідний знак ключа kp. Він має в алфавіті A порядковий

номер j. Тоді знак xp відкритого тексту перетворюється у знак кріптограми yp у відповідності з

правилом yp=a(i+j) mod m.

Наприклад, для алфавіту “abcd” обсягом m=4 таблиця порядкових номерів знаків відкритого тексту має наступний вигляд:

Зашифруємо відкритий текст “addcbdc” за допомогою ключа “cbccddb” тієї ж самої довжини. Ще раз підкреслимо, що і знаки відкритого тексту, і знаки ключа вибрано із одного й того ж алфавіту.

Процес застосування шифру Вижинера можна представити у вигляді наступної таблиці

Таким чином, отримуємо кріптограму “cabaacd”.

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

Для прикладу ключ шифрування “cbccddb” перетворимо у відповідний ключ дешифрування при умові, що використовується той же алфавіт

Таким чином, отримуємо ключ дешифрування “cdccbbd”.

Тепер дешифрування кріптограми можна здійснити у точно такий же спосіб, як і шифрування відкритого тексту. Наприклад, для того ж самого алфавіту дешифруємо кріптограму “cabaacd”.

Таким чином, отримуємо відкритий текст “addcbdc”.

 


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

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал