如何组合ASCII文本文件,然后加密,然后解密,并放入“文件”类? C ++

时间:2010-04-01 23:15:54

标签: c++ encryption file

例如,如果我有三个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 个答案:

答案 0 :(得分:6)

只需使用zip文件?
您当然可以滚动自己的标题元数据来存储文件名,但是这个特定的轮子已经被重新发明了很多次。

如果您需要比zlib提供的更好的加密,那么您可以在您的平台中使用crypt函数,或者很容易实现blowfish

之类的内容

答案 1 :(得分:0)

如果您不想使用预先存在的文件格式,请自行制作简单文件格式。

像这样的布局应该有效:

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 ...
};