Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

un XOR без ключа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка информации из базы данных http://www.cyberforum.ru/cpp-beginners/thread311283.html
Вот функция вывода из файла: void Open() { Abbase z3; system ("cls"); cout<<"Abbase 0.36 beta 3\n"<<endl; cout<<"Таблица все внесенных абитуриентов\n"<<endl; ifstream fin("base.txt");...
C++ Последовательность Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных ее первому элементу.Решить, используя основные операторы языка С++. При решении... http://www.cyberforum.ru/cpp-beginners/thread311256.html
C++ метод половинного деления
дана f(x). дан отрезок на котором расположены положительные корни дана точность E могу написать функцию, для нахождения одного корня на этом отрезке, а надо найти все. использовать нужно метод...
Задаачка C++
Составить программу.Дан порядковый номер дня месяца, вывести на экран количество дней оставшихся до конца месяца...Знаю,задача простая но я незнаю как её делать...=(
C++ Показ на экране движения планет по орбите http://www.cyberforum.ru/cpp-beginners/thread311242.html
Собственно нужна прога которая будет показывать на экране движения планет по арбите или что то подобное.
C++ ошибка при компиляции и новый проект создавал,все равно не компилиться подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4942 / 2522 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.08.2011, 13:42
Цитата Сообщение от AzaKendler Посмотреть сообщение
надо просто искать повторы если они есть
Именно по смещению ключа, потому что разные символы открытого текста могут дать одинаковые символы в шифротексте, так как шифруются на разных символах ключа. (Слово "символ" в данном контексте условно).

Сейчас я попробую вкратце описать подобный "криптоанализ" :)
Допустим имеется открытый исходный текст:
Код
арозаупаланалапуазора
Допустим мы имеем ключ длиной в два символа (для простоты примера). В принципе нам не важно какой именно ключ и какой шифротекст будет после преобразования. Важно то, что определенные символызашифруются с повторами. Разобьем открытый текст на части, длины которых равны длине ключа.
Код
1     1   2  2  2  2    1     2
ар оз ау па ла на ла пу аз ор а
Цифрами отмечены те символы, которые в шифротексте будут одинаковыми. Хоть это и одна и та же буква. В шифротексте символ "а", помеченный 1-цей, будет отличаться от символа "а", помеченного 2-кой.

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

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
 
int main() {
    unsigned char buf[BUFSIZ] = "арозаупаланалапуазора";
    unsigned char key[BUFSIZ] = { 10, 45 };
    int i, j, keylen = strlen(key), buflen = strlen(buf);
 
    for (i = 0; i < buflen; i += keylen) {
        for (j = 0; j < keylen; ++j) {
            buf[i + j] ^= key[j];
        }
    }
 
    for (i = 0; i < buflen; ++i) {
        printf("%#2X%s", buf[i], (i + 1) % 2 ? " " : "\n");
    }
 
    return 0;
}
Код
0XDA 0X9D
0XDB 0XAD
0XDA 0X93
0XDA 0X9A
0XDA 0X9D
0XDB 0XAE
0XDA 0X92
0XDA 0X9D
0XDA 0X96
0XDA 0X9D
0XDA 0X90
0XDA 0X9D
0XDA 0X96
0XDA 0X9D
0XDA 0X92
0XDB 0XAE
0XDA 0X9D
0XDA 0X9A
0XDA 0X93
0XDB 0XAD
0XDA 0X9D
Посмотрите сколько значений 0xDA в первом стлбце и 0x9D во втором столбце - это все символы "а" в открытом тексте.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru