例如,如果我有三个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;
};
有没有办法做到这一点?
由于
答案 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 ...
};