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

Анализ текста - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Есть матрица из [100000][100000] как лучше ее представить в голове компьютера) http://www.cyberforum.ru/cpp-beginners/thread916436.html
Всем добрый день. Решил коллективно подумать))) есть матрица из в ней у меня значения 0 или 1 я представил её как char матрицу допустим если 0 это А если 1 это В занимает она в памяти 10 гигов, как...
C++ Инициализация полей класса через vector<> Здравствуйте, можете подсказать как правильно инициализировать поля класса, вот например есть класс MyClass, в нем 2 поля int x int у, имеется конструктор с параметрами, и вот в реализации создаю... http://www.cyberforum.ru/cpp-beginners/thread916415.html
C++ Строки. Поменять в каждом слове местами первую и последнюю буквы
Разработать программу, выполняющую задание в соответствии с вариантом. Программа должна запросить и ввести с клавиатуры строку и при необходимости дополнительные данные. Программа должна состоять не...
Дана строка. Найти число вхождений в ее подстроку , расположенную левее первого символа «.», подстроки из двух символов «:=» C++
Дана строка. Найти число вхождений в ее подстроку , расположенную левее первого символа «.», подстроки из двух символов «:=». Если символ «.» является самым первым символом исходной строки, либо...
C++ В массиве найти количество элементов, стоящих на четных местах, удовлетворяющих условию a<ti<b http://www.cyberforum.ru/cpp-beginners/thread916374.html
В массиве t(30), сформированном случайным образом, найти количество элементов, стоящих на четных местах, удовлетворяющих условию a<ti<b, где a и b - заданные числа. Помогите ещё разок...
C++ Как поток чтения (или записи) запихнуть в класс? Здравствуйте!!! Ребят, подскажите пожалуйста, собственно, как запихнуть в класс поток ifstream? Че-то я озадачен оказался *-) Без класса это выглядит у меня вот так: const size_t MAX1 = 81; ... подробнее

Показать сообщение отдельно
bgm123
39 / 39 / 16
Регистрация: 29.01.2013
Сообщений: 277
02.07.2013, 18:24  [ТС]
В этой программе открытый текст разбивается на порции по 64 символа. Далее, для каждой порции на основе
8 значного исходного ключа вырабатывается гамма. Гамма вырабатывается с использованием функции rand из стандартной библиотеки C. Сам алгоритм является симметричным. Ниже описаны основные функции и exe-ик.


Вот основные реализация основных функций:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#define MAX_OFFSET 100
#define SIZE_UKEY 8
#define SIZE_BLOCK 64
#define MAX_KEY_VALUE 256
 
//хеш функция
unsigned int StrToInt(char *str)
{
    unsigned int result = 0;
    int len = strlen(str);
 
    for(int i = 0; i < len; i++)
        result = (result * 10 + str[i]) % UINT_MAX;
        
    return result;
}
 
//генератор гаммы
void getKey(char *key, char *ukey, int size_key)
{
    unsigned int hash = StrToInt(ukey);
    static int offset = hash % MAX_OFFSET;
 
    for(int i = 0; i < SIZE_UKEY; i++){
        srand(ukey[i]);
        srand(hash + rand() + ukey[i]);
        for(int j = 1; j <= offset; j++)
            rand();
        for(int k = i; k < size_key; k += SIZE_UKEY)
            key[k] = rand();    
    }
 
    strncpy(ukey, key, SIZE_UKEY);
}
 
 
void CryptFile(FILE *in, FILE *out, char *ukey)
{
    char buf[SIZE_BLOCK + 1] = {0};
    char key[SIZE_BLOCK + 1] = {0};
    int count;
 
    while(!feof(in)){
        count = fread(buf, sizeof(char), SIZE_BLOCK, in);
        getKey(key, ukey, SIZE_BLOCK);
        for(int i = 0; i < count; i++)
            buf[i] ^= key[i];
        fwrite(buf, sizeof(char), count, out);
    }
}
0
Вложения
Тип файла: rar exe.rar (14.3 Кб, 4 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru