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

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

Восстановить пароль Регистрация
 
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
24.08.2010, 15:08     шифрование файлов произвольного типа #1
возникла проблема при шифровании: 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);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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)
еще я дописывал сразу после открытия проверку но не сохранил)
Yandex
Объявления
24.08.2010, 16:22     шифрование файлов произвольного типа
Ответ Создать тему
Опции темы

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