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

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

Войти
Регистрация
Восстановить пароль
 
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
#1

Шифрование файлов произвольного типа - C++

24.08.2010, 15:08. Просмотров 631. Ответов 4
Метки нет (Все метки)

возникла проблема при шифровании: txt файлы шифрует нормально но остальные типы(png) не хочет
вот код
файл SD.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#ifndef __SD
#define __SD
class SD
{
    public:
        SD ();
        static void OpenIn ();
        static void OpenOut ();
        static void Shifr ();
        static void DeShifr ();
        static void Exit ();
        static void Length ();
};
#endif
файл SD.CPP
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
#include <process.h>
#include <conio.h>
#include <iostream.h>
#include "SD.h"
FILE *In = NULL, *Out = NULL;
char *buff;
long int Count = 0;
void SD :: OpenIn ()
{
    char InName[150];
    cout << "Enter a name IN - File" << endl;
    cin >> InName;
    In = fopen (InName, "r");
}
void SD :: OpenOut ()
{
    char OutName[150];
    cout << "Enter a name OUT - File" << endl;
    cin >> OutName;
    Out = fopen (OutName, "w+");
}
void SD :: Shifr ()
{
    if (In != NULL && Out != NULL)
    {
        SD :: Length ();
        fseek (In, 0, SEEK_SET);
        fseek (Out, 0, SEEK_SET);
 
        buff = new char[Count];
 
 
            fread(buff,Count,1,In);
 
            for( int i = 0 ; i < Count ; i++ )
              buff[i]++;
 
            fwrite (buff,Count,1,Out);
          
    }
    else
    {
        cout << "Can not open IN file" << endl;
        getch ();
    }
}
void SD :: DeShifr ()
{
    if (In != NULL && Out != NULL)
    {
        SD :: Length ();
        fseek (In, 0, SEEK_SET);
        fseek (Out, 0, SEEK_SET);
 
        buff = new char[Count];
 
 
            fread(buff,Count,1,In);
 
            for( int i = 0 ; i < Count ; i++ )
              buff[i]--;
 
            fwrite (buff,Count,1,Out);
 
    }
    else
    {
        cout << "Can not open OUT file" << endl;
        getch ();
    }
}
void SD :: Exit ()
{
    fclose (In);
    fclose (Out);
    exit (1);
}
void SD :: Length ()
{
 
    fseek (In, 0, SEEK_SET);
    fseek( In, 0, SEEK_END );
    Count = ftell(In);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2010, 15:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шифрование файлов произвольного типа (C++):

Записать адрес переменной произвольного типа в переменную типа int - C++
Здравствуйте, есть структура __packed struct myStruct{ uint32 HisCh; uint32 sNo; uint16 tNo; uint32 reserv; };

Сортировка массива произвольного типа - C++
Помогите разобраться! зачем swap и memswap для сортировки в этой программе inline void swap(char&amp; a, char&amp; b)// Обмениваем элементы...

Динамический массив элементов произвольного типа - C++
Доброго времени суток. Будьте так добры, если вас не затруднит, помочь &quot;понимающему дубу&quot; с одной назойливой программкой. С...

Стек объектов произвольного типа (ООП) - C++
Здравствуйте, у меня есть задание - реализовать стек объектов произвольного типа. В указаниях описано, что данные класса - это...

Стек объектов произвольного типа (ООП) - C++
Здравствуйте, мне дали задание реализовать стек объектов произвольного типа с помощью ООП, и к тому же реализовать все эти сущности в виде...

Функции ввода и вывода массива произвольного типа через void - C++
Функции ввода и вывода массива произвольного типа через void нету разницы какие данные главное правильный код помогите очень нужно,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
24.08.2010, 15:16 #2
лендер, файлы нужно открывать, как двоичные (с буковкой "b") - это во-первых. А во-вторых с языком программирования всё-таки определитесь. Такие вот гремучие смеси из С и С++ выглядят ужасно, а работают ещё хуже...
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
24.08.2010, 15:37  [ТС] #3
это не мой код, мне дали его подправить

Добавлено через 14 минут
у меня с режимом открытия "b" вообще ничего не открывает, может его вообще не существует в borland c++ 3.1
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
24.08.2010, 15:57 #4
Цитата Сообщение от лендер Посмотреть сообщение
у меня с режимом открытия "b" вообще ничего не открывает,
добавлять надо букву b
C++
1
2
3
4
5
...
In = fopen (InName, "rb");
...
Out = fopen (OutName, "w+b");
...
И кстати - проверять результат открытия файлов неплохо бы, а то fopen() ни про какие исключения не знает, просто возвращает NULL если не задалось что-то...
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
24.08.2010, 16:22  [ТС] #5
там есть
C++
1
  if (In != NULL && Out != NULL)
еще я дописывал сразу после открытия проверку но не сохранил)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2010, 16:22
Привет! Вот еще темы с ответами:

Структура для хранения массива произвольного типа с использованием шаблонов - C++
Здравствуйте. Помогите, пожалуйста, разобраться с кодом программы. Необходимо реализовать структуру для хранения массива произвольного...

Собственная реализация контейнера для хранения значений произвольного типа - C++
Дали следующее задание. Не совсем понимаю с чего начинать и как дальше быть. Сказали, что нужно через шаблоны сделать. Если у кого-нибудь...

Обработка файлов произвольного доступа - C++
Создать файл, содержащий массив указателей на упорядоченные в алфавитном порядке строки, представленные записями переменной длины....

Реализовать структуру для хранения массива произвольного типа с помощью шаблонов - C++
Помогите пожалуйста, как реализовать структуру?? Сегодня вам нужно реализовать структуру для хранения массива произвольного типа с ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.08.2010, 16:22
Ответ Создать тему
Опции темы

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