ксту замінюються на які-небудь інші літери, числа, символи і т.п. При цьому заміна здійснюється так, що б потім по шифрованому повідомленням можна було однозначно відновити передане повідомлення. Наприклад, кожній букві російського алфавіту ставитися у відповідність якась інша буква цього ж алфавіту. p align="justify"> У цій роботі пропонується якийсь умовний метод шифрування.
Суть методу. Оригінальний текст задається набором символів. Кожен символ відкритого тексту визначається його ANSII-кодом Si, i = 0, m. br/>В
Користувач програми шифрування задає початковий символьний вектор (ключ шифрування) довжиною n, вказаний в завданні. Цей набір символів перетворюється на цілочисельний вектор REG, кожен елемент якого визначається ANSII-кодом заданих символів. p align="justify"> Користувач програми шифрування також задає т.зв. отводящую послідовність - номери елементів масиву REG, які вказані у варіантах завдання до курсової роботи.
Над кожним ANSII-кодом символу тексту Si проводиться операція
В
де:
В
Поточний ANSII-код символу гами визначається числом, що знаходиться в REG0.
Елемент вектора REGn розраховується за формулою:
В
де REG0j - елементи масиву, що знаходяться в відводить послідовності.
.2 Дешифрування шіфротекста
Дешифрування шіфротекста здійснюється на основі бітової операції , для якої справедливо
В
Тобто, якщо до шифрованому символу знову застосувати операцію з тим же символом ключа, що і при шифруванні, то результатом буде вихідний символ.
4. Варіант завдання
Дана робота була виконана за варіантом завдання № 2:
№ варіантаДліна ключа REGОтводящая последовательностьСпособ введення символів ключа2170, 1,2,3,7,12,14 Вводяться користувачем як параметр командного рядка при запуску програми
5. Укрупненная структурна схема програми шифрування
В
.1 Код програми шифрування
файл заміна шифрування текст
# include
# include
# include namespace std; main ()
{(0, ""); * input, * output; int reglen = 17, buflen = 1000, inpathlen = 1001, outpathlen = 1001; reg [reglen], regbuf, buffer [ buflen], i, j, counter = 0; inpath [inpathlen], outpath [outpathlen], c; ("Введіть шлях до файлу, який буде зашифрований (до 1000 символів): n");
for (i = 0; i
{[i] = getche (); (inpath [i] == 13) {break;}; ...