Автор работы: Пользователь скрыл имя, 23 Апреля 2013 в 15:16, лабораторная работа
Система шифрования Цезаря с ключевым словом является одноалфавитной системой подстановки. Особенностью этой системы является использование ключевого слова для смещения и изменения порядка символов в алфавите подстановки. Выберем некоторое число k, , и слово или короткую фразу в качестве ключевого слова. Желательно, чтобы все буквы ключевого слова были различными.
Теперь мы имеем подстановку для каждой буквы произвольного сообщения. Исходное сообщение SEND MORE MONEY шифруется как HZBY TCGZ TCBZS. Следует отметить, что требование о различии всех букв ключевого слова не обязательно.
Система Цезаря с ключевым словом.
Система шифрования Цезаря с ключевым словом является одноалфавитной системой подстановки. Особенностью этой системы является использование ключевого слова для смещения и изменения порядка символов в алфавите подстановки. Выберем некоторое число k, , и слово или короткую фразу в качестве ключевого слова. Желательно, чтобы все буквы ключевого слова были различными. Пусть выбраны слово DIPLOMAT в качестве ключевого слова и число k = 5. Ключевое слово записывается под буквами алфавита, начиная с буквы, числовой код которой совпадает с выбранным числом k:
0 |
1 |
2 |
3 |
4 |
5 |
|
|
|
|
10 |
|
|
|
|
15 |
|
|
|
|
20 |
|
|
|
|
25 |
А |
B |
C |
D |
Е |
F |
G |
Н |
I |
J |
К |
L |
М |
N |
0 |
Р |
Q |
R |
S |
T |
U |
V |
W |
Х |
Y |
Z |
|
|
|
|
|
D |
I |
P |
L |
O |
M |
A |
T |
|
|
|
|
|
|
|
|
|
|
|
|
|
Оставшиеся
буквы алфавита подстановки записываются
после ключевого слова в
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
А |
B |
C |
D |
Е |
F |
Q |
Н |
I |
J |
К |
L |
М |
N |
0 |
Р |
Q |
R |
S |
T |
U |
V |
W |
Х |
Y |
Z |
V |
W |
Х |
Y |
Z |
D |
I |
P |
L |
O |
M |
A |
T |
B |
C |
E |
F |
G |
H |
J |
K |
N |
Q |
R |
S |
U |
Теперь мы имеем подстановку для каждой буквы произвольного сообщения. Исходное сообщение SEND MORE MONEY шифруется как HZBY TCGZ TCBZS. Следует отметить, что требование о различии всех букв ключевого слова не обязательно. Можно просто записать ключевое слово (или фразу) без повторения одинаковых букв. Например, ключевая фраза: КАК ДЫМ ОТЕЧЕСТВА НАМ СЛАДОК И ПРИЯТЕН
и число k=3 порождают следующую таблицу подстановок:
0 |
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
Й |
К |
Л |
М |
Н |
О |
П |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ь |
Ы |
Ъ |
Э |
Ю |
Я |
Ъ |
Э |
Ю |
К |
А |
Д |
Ы |
М |
О |
Т |
Е |
Ч |
С |
В |
Н |
Л |
И |
П |
Р |
Я |
Б |
Г |
Ж |
З |
Й |
У |
Ф |
Х |
Ц |
Ш |
Щ |
Ь |
Несомненным достоинством системы Цезаря с ключевым словом является то, что количество возможных ключевых слов практически неисчерпаемо. Недостатком этой системы является возможность взлома шифртекста на основе анализа частот появления букв.
Описание основных операций булевой алгебры
Булевой алгеброй называется произвольное множество элементов a, b, c, ... , для которых определены две операции - сложение и умножение, сопоставляющие каждым двум элементам a и b их сумму a + b и произведение a b ; определена операция "отрицание", сопоставляющая каждому элементу a новый элемент (-a) ; имеются два "особых" элементов 0 и 1 и выполняются следующие правила:
Аксиомы:
Свойства логических операций:
1. Коммутативность: x
2. Идемпотентность: x
3. Ассоциативность: (x
4. Дистрибутивность конъюнкций
и дизъюнкции относительно
5. Законы де Моргана:
6. Законы поглощения:
7. Другие (1):
8. Другие (2):
9. Другие (3) (Дополнение законов де Моргана):
x |
y |
0 |
x↓y |
x←y |
x |
x→y |
y |
x⊕y |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
x|y |
x & y |
x ≡ y |
y |
x→y |
x |
x←y |
x ∨ y |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
x |
0 |
x̅ |
x |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
Шифрование методом "исключающего или"
Основная идея алгоритма состоит в том, что если у нас есть некая величина, есть некий шифровальный ключ (другая величина), то можно зашифровать исходные данные через этот ключ, применив операцию XOR побитно. Т.е. если у нас есть исходная фраза a и ключ k, то x = a ^ k. Теперь, если к шифру x опять применить ключ, то получим исходную фразу, т.е. a` = x ^ k, где a` = a.
Принцип в примере:
#include <iostream>
using namespace std;
int main()
{
// Кодируемая информация
const int Source = 333;
// Ключ шифрования
const int Key=5;
int coded = Source ^ Key;
int decoded = coded ^ Key;
cout << "Source data: " << Source << endl << endl;
cout << "Code key: " << Key << endl << endl;
cout << "Coded: " << coded << endl<< endl;
cout << "Decoded: " << decoded << endl<< endl;
system("PAUSE");
return 0;
}
Шифрование и дешифрование умножением на бинарные матрицы
№ |
Ключ |
Матрица 1 |
Матрица 2 |
1 |
10101001 |
10011101 11101101 11001111 11011100 10100101 10011001 00011111 00100001 |
10001101 11111110 01101111 01010001 10110110 10000100 00001111 01101110 |
Ключ :
|