Dec 27, 2016 17:40
Интересно, что, теоретически лучшим шифром является "one time pad", "одноразовая запись" так, что ли, можно перевести. В чем суть? Допустим, что мы хотим зашифровать слово "No". Условием "one time pad" является то, что ключ должен состоять из случайных символов, а во вторых, что является проблемой - он должен быть той же длины, что и запись. В реальной жизни, когда исходная запись составляет гигабайты, это, понятно невыполнимо. А потому вся остальная криптология - это, в сущности, поиск способов как сделать ключ повторяющимся и при этом безопасным. Безопасность очень важна, поскольку теорема гласит, что дваждый использованный ключ - путь к вероятной "утечке". А если есть утечка, то будет и взлом, это лишь вопрос времени. Но, вернемся к "one time pad". Итак, слово у нас есть, а ключ из случйных символов пусть будет "kH". Далее, находим бианрный код всех символов:
Сообщение (m):
N - 1001110
o - 1101111
Ключ (k)
k - 1101011
Н - 1001000
Далее применяем к записи m и ключу k логическую операцию XOR.(Здесь обозначение XOR как ^) Это когда 0^1 = 1, 0^0 =0, 1^1 =0
10011101101111 ^ 11010111001000 = 01001010100111
0100101 - (37) сответсвует символу - %
0100111 - (39) сответсвует символу - ' (апостроф)
То есть зашифрованная запись будет выглядеть как [%']
Но самое вкусное в этом то, что если использовать тоже действие по отношению к шифру с тем же ключом, мы получим исходное сообщение:
%' ^ kH = No
01001010100111 ^ 11010111001000 = 10011101101111
Просто, изящно и надежно. Проблема лишь в том, что - увы - непрактично.
cryptology