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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
BTOOOM
2 / 2 / 0
Регистрация: 22.02.2013
Сообщений: 26
#1

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

22.02.2013, 10:25. Просмотров 2964. Ответов 6
Метки нет (Все метки)

Написать программы шифрования и расшифровки файла методом циклического сдвига. Т.е. каждый символ исходного файла (исходный код - 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++ Функция циклического сдвига побитово вправо
C++ программа для шифрования и расшифровки текстовых файлов
C++ Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
22.02.2013, 10:27     Написать программы шифрования и расшифровки файла методом циклического сдвига #2
Что не получается?
BTOOOM
2 / 2 / 0
Регистрация: 22.02.2013
Сообщений: 26
22.02.2013, 10:43  [ТС]     Написать программы шифрования и расшифровки файла методом циклического сдвига #3
ЧТО-ТО НЕТ((((((
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
22.02.2013, 10:51     Написать программы шифрования и расшифровки файла методом циклического сдвига #4
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++ Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз
Не хватает опыта для того, чтобы понять ошибку в задаче циклического побитового сдвига C++
C++ Написать программу шифрования и дешифрования методом подстановки
C++ Написать AES, шифрования любого файла .exe.
Написать код шифрования методом "Змеиный" и "Спиральный" C++

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru