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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
BTOOOM
 Аватар для BTOOOM
2 / 2 / 0
Регистрация: 22.02.2013
Сообщений: 26
22.02.2013, 10:25     Написать программы шифрования и расшифровки файла методом циклического сдвига #1
Написать программы шифрования и расшифровки файла методом циклического сдвига. Т.е. каждый символ исходного файла (исходный код - K1) заменяется на символ с ascii-кодом K2 измененным на одну и ту же величину Delta (K2 = K1 + Delta). Причем, если в результате сдвига получается код K1 > 255 на величину Delta1 = 255 - K1 - Delta больше чем 255, то получаем символ с кодом Delta1.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2013, 10:25     Написать программы шифрования и расшифровки файла методом циклического сдвига
Посмотрите здесь:

программа циклического сдвига числа C++
C++ программа для шифрования и расшифровки текстовых файлов
Программа циклического сдвига элементов массива C++
C++ Функция циклического сдвига побитово вправо
Реализовать функции шифровки и дешифровки методом циклического сдвига битов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
22.02.2013, 10:27     Написать программы шифрования и расшифровки файла методом циклического сдвига #2
Что не получается?
BTOOOM
 Аватар для BTOOOM
2 / 2 / 0
Регистрация: 22.02.2013
Сообщений: 26
22.02.2013, 10:43  [ТС]     Написать программы шифрования и расшифровки файла методом циклического сдвига #3
ЧТО-ТО НЕТ((((((
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
22.02.2013, 10:51     Написать программы шифрования и расшифровки файла методом циклического сдвига #4
BTOOOM, что именно не получается?
BTOOOM
 Аватар для BTOOOM
2 / 2 / 0
Регистрация: 22.02.2013
Сообщений: 26
22.02.2013, 10:57  [ТС]     Написать программы шифрования и расшифровки файла методом циклического сдвига #5
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 секунд
ВОТ ТАК?????
windows98a
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 2
04.07.2013, 09:57     Написать программы шифрования и расшифровки файла методом циклического сдвига #6
Неплохой пример шифрования ,есть и циклический сдвигl
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 10:24     Написать программы шифрования и расшифровки файла методом циклического сдвига
Еще ссылки по теме:

C++ Как закодировать методом циклического сдвига?
C++ Ошиба циклического сдвига
Не хватает опыта для того, чтобы понять ошибку в задаче циклического побитового сдвига C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
04.07.2013, 10:24     Написать программы шифрования и расшифровки файла методом циклического сдвига #7
иногда заявления типа
надежная криптосистема с открытым кодом на C++
откровенно поражают в безграмотности создателей таких "надежных криптосистем". Проверка на тесты NIST разве дает многое... А как же проверка на подверженность криптоанализу (линейный, дифференциальный, алгебраический и т.д.). Со временем, даже в гос.стандартах находят прорехи, несмотря на изначальные многолетние исследования. Для некоторых некогда популярных хеш-функций со временем все же удается построить коллизии и отмирают такие хеш-функции. а тут
надежная криптосистема...
вот кого хотел рассмешить автор такого заявления...
Yandex
Объявления
04.07.2013, 10:24     Написать программы шифрования и расшифровки файла методом циклического сдвига
Ответ Создать тему
Опции темы

Текущее время: 19:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru