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

Поправьте мой код (шифратор файлов) - C++

Восстановить пароль Регистрация
 
sizare
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
22.12.2013, 17:08     Поправьте мой код (шифратор файлов) #1
Задача: сделать шифратор файлов на основе побайтового копирования с паролем

вот, что у меня получилось: все работает, но только с текстовыми файлами.

Как сделать, чтобы работало со всеми типами файлов?

через функцию fread- не получается

вот мой код:

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
#include <stdio.h>
#include <locale>
#include <conio.h>
#include <fstream>
#include <iostream>
 
int main(){
 
FILE *def = fopen("55.txt", "rb"); //исходный файл
FILE *shifr = fopen("55-1.txt", "wb"); //копированный (шифрованный) файл
 
int d = 0;
char x[100];
printf("Vvedi pass: ");
scanf("%s", &x);
 
//создаем ключ из пароля, его будем прибавлять к каждому байту исходного файла
int key = 0;
for(int i =0; i<strlen(x); i++)
{
key+=(unsigned int)x[i];
}
 
int c = 0; 
 
while ((c = fgetc(def)) != EOF)
{
//к каждому байту прибавялем ключ, для того чтобы значение не выходило за пределы байта берем остаток от деления на 255
c=(c+key)%255;
 
printf("%d\n", c);
 
fprintf(shifr, "%c", c); //вывод файла `
}
 
_getch();
 
fclose(def);
fclose(shifr);
}
Добавлено через 47 минут
Сколько ни пробую - не получается чтобы шифровал например jpeg

Добавлено через 59 минут
Что, никно не знает C++?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 17:08     Поправьте мой код (шифратор файлов)
Посмотрите здесь:

Поправьте пожалуйста код ... C++
Поправьте код!!! C++
Поправьте код... C++
C++ Поправьте код.
C++ Поправьте пожалуйста мой калькулятор
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,886
Записей в блоге: 1
22.12.2013, 17:36     Поправьте мой код (шифратор файлов) #2
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
#define ASCII_SIZE         (256)
 
int main(int argc,char** argv)
{
   char     pszTemp[MAX_PATH];
 
   FILE*    pSrc = fopen(argv[1],"rb");
 
   strcpy(pszTemp,argv[1]);
   strcat(pszTemp,".enc");
 
   FILE*    pDst = fopen(pszTemp,"wb");
 
   BYTE     byKey = 0;
 
   while (*argv[2])
   {
      byKey += *argv[2];
      ++argv[2];
   }
 
   int   iChr = 0; 
 
   while ((iChr = fgetc(pSrc)) != EOF)
   {
      iChr ^= byKey;
 
      fputc(iChr,pDst);
   }
 
   fclose(pSrc);
   fclose(pDst);
 
   return 0;
}
sizare
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
22.12.2013, 17:44  [ТС]     Поправьте мой код (шифратор файлов) #3
Цитата Сообщение от gazlan Посмотреть сообщение
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
#define ASCII_SIZE         (256)
 
int main(int argc,char** argv)
{
   char     pszTemp[MAX_PATH];
 
   FILE*    pSrc = fopen(argv[1],"rb");
 
   strcpy(pszTemp,argv[1]);
   strcat(pszTemp,".enc");
 
   FILE*    pDst = fopen(pszTemp,"wb");
 
   BYTE     byKey = 0;
 
   while (*argv[2])
   {
      byKey += *argv[2];
      ++argv[2];
   }
 
   int   iChr = 0; 
 
   while ((iChr = fgetc(pSrc)) != EOF)
   {
      iChr ^= byKey;
 
      fputc(iChr,pDst);
   }
 
   fclose(pSrc);
   fclose(pDst);
 
   return 0;
}
Спасибо за старания, но ничего не работает(
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,886
Записей в блоге: 1
22.12.2013, 17:55     Поправьте мой код (шифратор файлов) #4
Цитата Сообщение от sizare Посмотреть сообщение
ничего не работает
Работает, причем, в обоих направлениях: и зашифровывает и расшифровывает :-)
sizare
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
22.12.2013, 18:09  [ТС]     Поправьте мой код (шифратор файлов) #5
Цитата Сообщение от gazlan Посмотреть сообщение
Работает, причем, в обоих направлениях: и зашифровывает и расшифровывает :-)
можете выложить *cpp файл с подключенными библиотеками итд... ? буду премного благодарен ! у меня visual studio..
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,886
Записей в блоге: 1
22.12.2013, 18:40     Поправьте мой код (шифратор файлов) #6
Цитата Сообщение от sizare Посмотреть сообщение
*cpp файл с подключенными библиотеками
??

Весь код в #2, никаких библиотек, кроме стандартного Run-time, не требуется.

Расскажите лучше, что вы делаете для того, чтобы у вас это "не работало".
sizare
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
22.12.2013, 18:42  [ТС]     Поправьте мой код (шифратор файлов) #7
Цитата Сообщение от gazlan Посмотреть сообщение
??

Весь код в #2, никаких библиотек, кроме стандартного Run-time, не требуется.

Расскажите лучше, что вы делаете для того, чтобы у вас это "не работало".
вставляю код в студию, запускаю...

char pszTemp[MAX_PATH]; вместо MAX_PATH должен быть путь к файлу, который я хочу зашифровать?
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,886
Записей в блоге: 1
22.12.2013, 18:57     Поправьте мой код (шифратор файлов) #8
Цитата Сообщение от sizare Посмотреть сообщение
вместо MAX_PATH должен быть путь к файлу, который я хочу зашифровать
Нет, разумеется. Ничего в коде менять не требуется (без ясного понимания, по крайней мере).

Имя файла для зашифровки/расшифровки передаете первым параметром командной строки, ключ (строка) - вторым. К имени обработанного файла будет дописано расширение .enc

Если повторно "зашифровать" уже зашифрованный файл с тем же самым паролем, он окажется дашифрованным (по свойству XOR: сложение и вычитание по mod 2 совпадают).
sizare
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
22.12.2013, 19:20  [ТС]     Поправьте мой код (шифратор файлов) #9
Цитата Сообщение от gazlan Посмотреть сообщение
Нет, разумеется. Ничего в коде менять не требуется (без ясного понимания, по крайней мере).

Имя файла для зашифровки/расшифровки передаете первым параметром командной строки, ключ (строка) - вторым. К имени обработанного файла будет дописано расширение .enc

Если повторно "зашифровать" уже зашифрованный файл с тем же самым паролем, он окажется дашифрованным (по свойству XOR: сложение и вычитание по mod 2 совпадают).
Поправьте мой код (шифратор файлов)
вот сколько ошибок показывает.
т.е вместо argv[1] нужно подставить имя своего файла? (напр fopen("55.txt", "rb"); //исходный файл) ?
gazlan
2857 / 1805 / 271
Регистрация: 27.08.2010
Сообщений: 4,886
Записей в блоге: 1
22.12.2013, 19:35     Поправьте мой код (шифратор файлов) #10
Цитата Сообщение от sizare Посмотреть сообщение
т.е вместо argv[1] нужно подставить имя своего файла
Еще раз: Имя файла задается как аргумент командной строки.

И чтобы не искать, где это в ваших хедерах (MSVC 2010 у меня нет), замените MAX_PATH на число 260, и BYTE на unsigned char.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2013, 20:13     Поправьте мой код (шифратор файлов)
Еще ссылки по теме:

Поправьте код C++
Поправьте код C++
Поправьте Код C++

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

Или воспользуйтесь поиском по форуму:
sizare
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
22.12.2013, 20:13  [ТС]     Поправьте мой код (шифратор файлов) #11
Цитата Сообщение от gazlan Посмотреть сообщение
Еще раз: Имя файла задается как аргумент командной строки.

И чтобы не искать, где это в ваших хедерах (MSVC 2010 у меня нет), замените MAX_PATH на число 260, и BYTE на unsigned char.
спасибо! наконец-то разобрался как работать!
Yandex
Объявления
22.12.2013, 20:13     Поправьте мой код (шифратор файлов)
Ответ Создать тему
Опции темы

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