Показать сообщение отдельно

  #10  
Старый 20.04.2010, 19:41
ktotoOmg
Новичок
Регистрация: 10.04.2010
Сообщений: 10
С нами: 8467379

Репутация: 3
По умолчанию

Суть: написать программу(или 2 отдельные) для шифрования и дешифрования (замечу, именно дешифрования, т.е. не зная ключ получить исходный текст, попросту говоря - взлом) используя алгоритм XOR.

Собственно для самого шифрования написал, ничего сложного нету. Проблемы возникли именно со второй частью - дешифровкой. Из всего материала в интернете подобрал вот такой вот способ взлома:

Цитата:
1. Определим длину ключа с помощью процедуры, известной как подсчет совпадений. Применим операцию XOR к шифротексту, используя в качестве ключа сам шифротекст с различными смещениями, и подсчитаем совпадающие байты. Если величина смещения кратна длине ключа, то совпадет свыше 6 процентов байтов. Если нет, то будут совпадать меньше чем 0.4 процента (считая, что обычный ASCII текст кодируется случайным ключом, для других типов открытых текстов числа будут другими). Это называется показателем совпадений. Минимальное смещение от одного значения, кратного длине ключа, к другому и есть длина ключа.
2. Сместим шифротекст на эту длину и проведем операцию XOR для смещенного и оригинального шифротекстов. Результатом операции будет удаления ключа и получение открытого текста, подвергнутого операции XOR с самим собой, смещенным на длину ключа. Так как в английском языке на один байт приходится 1.3 бита действительной информации, существующая значительная избыточность позволяет определить способ шифрования.
Как получить исходный текст, кроме как полным перебором ключей (если известна его длина) - так и не понял. Условием задания допускается знание какой алфавит был использован в тексте и ключе (для простоты можно брать английский).

Кто имеет какие-либо домыслы по этому поводу либо же какие-то наброски кода - прошу помочь.
 
Ответить с цитированием