Как объединить текстовые файлы ASCII, затем зашифровать, затем расшифровать и поместить в класс «Файл»? C ++ - PullRequest
1 голос
/ 02 апреля 2010

Например, если у меня есть три файла ASCII:

file1.txt
file2.txt
file3.txt

... и я хотел объединить их в один зашифрованный файл:

database.txt 

Затем в приложении я расшифровываю файл database.txt и помещаю каждый из исходных файлов в класс File в куче:

class File{
public:
    string getContents();
    void setContents(string data);
private:
    string m_data;
};

Есть ли способ сделать это?

Спасибо

Ответы [ 2 ]

6 голосов
/ 02 апреля 2010

Просто используйте zip файл?
Конечно, вы можете свернуть свои собственные метаданные заголовка, чтобы сохранить имена файлов, но это конкретное колесо было изобретено достаточно много раз.

Если вам нужно лучшее шифрование, чем в zlib, то вы можете использовать функции crypt на своей платформе, или очень просто реализовать что-то вроде blowfish

0 голосов
/ 02 апреля 2010

Если вы не хотите использовать уже существующий формат файла, создайте свой собственный простой.

Что-то вроде этого макета должно работать:

class DatabaseFile {
    private:
        struct FileHeader {
            uint32_t fileId;
            uint32_t fileSize;
            char data[0];
        };

        File readFile(...) {
            read();
            decrypt();
        }

        File writeFile(...) {
            encrypt();
            write();
        }

    public:
        DatabaseFile();
        DatabaseFile(std::vector<File> files);

        static DatabaseFile read(std::istream) {
            while(!eof) {
                readFile();
            }
        }

        void write(std::ostream) {
            foreach(file) {
                writeFile();
            }
        }

        std::vector<File> files;
};

class DatabaseFileEncryption {
    // However you want it ...
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...