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

Написать программы шифрования и расшифровки файла методом циклического сдвига - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сколько единиц продукции можно выпустить с данным запасом сырья и какой вид сырья будет ограничивать выпуск продукции? http://www.cyberforum.ru/cpp-beginners/thread792282.html
Для выпуска некоторого изделия необходимо затратить N видов сырья, причем на одну единицу изделия приходится ai количество i-го сырья. На складе имеется bi количество i-го сырья. Сколько единиц...
C++ Написать программу, которая создает матрицу NxN с элементами Написать программу, которая создает матрицу NxN с элементами, пронумерованными по скручивающейся спирали http://www.cyberforum.ru/cpp-beginners/thread792280.html
считать точки в массив и вывести его на экран C++
Задан массив точек в файле (Каждая пара чисел - X и Y координат точек записываются в круглых скобках, отделяются друг от друга пробелом считать эти точки в массив и вывести его на экран. Пример:...
C++ Как оптимизировать функцию сотрировки строк?
VisualStudio2012, Win7x64Prof Итак, есть массив строк типа wchar_t, которые надо отсортировать (пусть это список ФИО сотрудников). Вызов функции qsort: qsort((void*) ArrayFIO, QuantityFIO,...
C++ Матрица/ Осуществить в цикле проверку факта расположения всех 10 точек на прямой, проходящей через начало координат... http://www.cyberforum.ru/cpp-beginners/thread792269.html
Дана матрица А с 2 строками и 10 столбцами.Первый элемент каждого столбца представляет абсциссу, а второй - ординату одной из 10 заданных точек. Осуществить в цикле проверку факта расположения всех...
C++ Не выходит сделать вычисление void UTIL_Calculate( const float *v1, const float *v2, float flDist ) { float flMultiplier = flDist / 48.0; float MulScalar = v1 * flMultiplier; } float MulScalar = v1 * flMultiplier; ... подробнее

Показать сообщение отдельно
BTOOOM
2 / 2 / 0
Регистрация: 22.02.2013
Сообщений: 26
22.02.2013, 10:57  [ТС]
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>
#include <conio.h>
#include <fstream>
#include <cstring>
#include <stdio.h>
#include <windows.h>
 
using namespace std;
/*------key1 - ключ. пароль///filename1[30] - имя файла на входе
filename2[30] - имя файла на выходе///k1 - длина ключа
coding1,2,3 - переменные для преобразования исходного символа*/
int main()
{
    FILE *fp1, *fp2, *fp3, *fp4;//объявляем потоки
    char filename1[30], filename2[30],key1[20];
    int n=0,m=0,k1;
    unsigned char code=0;
    int temp;
    int coding1, coding2, coding3, coding4, z;
    cout << "1 - Зашифровать файл.\n" << "2 - расшифровать файл\n";
    cin >> z;
    if(z==1)
    {
       cout << "Введите пароль для шифрования: ";
       cin >> key1;
       cout << "key = " << key1;
       cout << "\nВведите имя файла для шифрования: ";
       cin >> filename1;
       k1 = strlen(key1);//обработка ключа
       cout << "k1 = " << k1 << endl;
       for(int i=0;i<k1;i++)
       {
            code = (code + key1[i]);
       } 
       // m - вычисляется из ключа сложением по модулю 2^6
       for(int i=1;i<k1;i++)
       {
            m = (key1[i-1] + key1[i])%64;
       }
       cout << "m = " << m << endl;
       /*отрывает входной файл только для 
       чтения в бинарном режиме*/
       fp1 = fopen(filename1, "rb");
       if (!fp1)
       {
          cout << "Ошибка открытия файла\n";
          getch();
          exit(1);
       }
       cout << "\nВведите имя зашифрованного файла: ";
       cin >> filename2;
       /*открываем новый файл для записи
       в бинарном режиме*/
       fp2 = fopen(filename2, "wb");
       if (!fp2)
       {
          cout << "Ошибка открытия файла\n";
          getch();
          exit(1);
       }
       for(int i = 0;i<16;i++)
        {
       while((temp = getc(fp1)) != EOF)
       {
          //инвертируем биты
          coding1 = ~temp;
          //Исключающее ИЛИ
          coding2 = coding1^code;
          //Сложение
          coding3 = coding2 + code;
          //Исключающее ИЛИ с m
          coding4 = coding3^m;
 
          putc(coding4,fp2);
       };
       }
       fclose(fp1);
       fclose(fp2);
    }
    else
    {
        cout << "Введите пароль для расшифровки: ";
        cin >> key1;
        cout << "\nkey = " << key1;
        k1 = strlen(key1);
        cout << "\nk1 = " << k1 << endl;
        for(int i=0;i<k1;i++)
        {
            code = (code + key1[i]);
        } 
        for(int i=1;i<k1;i++)
        {
            m = (key1[i-1] + key1[i])%64;
        }
        cout << "m = " << m << endl;
        cout << "\nВведите имя файла для расшифрования: ";
        cin >> filename1;
        fp3 = fopen(filename1, "rb");
        if (!fp3)
        {
        cout << "Ошибка открытия файла\n";
        getch();
        exit(1);
        }
        cout << "\nВведите имя рашифрованного файла: ";
        cin >> filename2;
        fp4 = fopen(filename2, "wb");
        if (!fp4)
        {
           cout << "Ошибка открытия файла\n";
           getch();
           exit(1);
        }
        /*Запускаем цикл шифрования 16 раз*/
        for(int i = 0;i<16;i++)
        {
           while((temp = getc(fp3)) != EOF)
           {
               coding1 = temp^m;
               coding2 = coding1 - code;
               coding3 = coding2^code;
               coding4 = ~coding3;
               putc(coding4,fp4);
           };
        }
        fclose(fp3);
        fclose(fp4);
    }
    cout << "END\n";
    MessageBox(NULL, "END", "END", MB_OK);
    getch();
    return 0;
}
Добавлено через 1 минуту
ВОТ ТАК?????

Добавлено через 17 секунд
ВОТ ТАК?????
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru