Краткий теоретический материал по xor-шифрованию
Алгоритм xor-шифрования является одним из самых простых линейных симметричных алгоритмов шифрования.
Работа алгоритма заключается в последовательном цикличном кодировании символов входной последовательности с символами шифр-ключа с помощью операции сложения по модулю 2 (⊕), иными словами — исключающего ИЛИ (XOR).
ci = ai ⊕ ki mod Lkey,
где
ai — символы входной последовательности,
Lkey — длина шифр-ключа, а
ki — символы шифр-ключа.
Алгоритм является линейным, так как работает с символами входной последовательности последовательно.
А свойство симметричности означает, что для расшифровки закодированного сообщения используется тот же шифр-ключ, что и для кодирования.
Действительно, если к закодированной последовательности повторно применить шифр-ключ, получится исходная последовательность:
ci ⊕ ki mod Lkey = ( ai ⊕ ki mod Lkey) ⊕ ki mod Lkey = ai ⊕ ( ki mod Lkey ⊕ ki mod Lkey) = ai ⊕ 0 = ai,
В случае, если длина ключа
Lkey = 1, то алгоритм вырождается в метод алфавитной замены каждой буквы алфавита на одну и ту же другую букву.
Для обеспечения стойкости алгоритма необходимо использовать «случайный» ключ длины, равной длине кодируемого сообщения.
Более того, в идеале, нельзя одним и тем же ключом кодировать несколько сообщений.
Ключ необходимо генерировать каждый раз заново.
Но такое условие затрудняет использование алгоритма, так как требует скрытой передачи получателю длинного шифр-ключа, уникального для каждого передаваемого сообщения.