如何解决我想加密测试文件夹中的所有文件
我想加密测试文件夹中的所有文件。 这适用于文本文件,但不适用于二进制文件。
源代码:
void l(string& foldername,vector<string>& output) {
DIR* dir;
struct dirent* DirEntry;
if ((dir = opendir(foldername.c_str())) != NULL)
{
while ((DirEntry = readdir(dir)) != NULL)
{
if (strcmp(DirEntry->d_name,".") && strcmp(DirEntry->d_name,".."))
{
string subfolder(foldername);
subfolder += "\\";
subfolder += DirEntry->d_name;
DIR* subdir;
if ((subdir = opendir(subfolder.c_str())) != NULL)
{
l(subfolder,output);
closedir(subdir);
}
else
{
string fullname(foldername);
fullname = fullname + '\\' + DirEntry->d_name;
output.push_back(fullname);
}
}
}
closedir(dir);
}
}
void start() {
try
{
vector <string> volumes;
volumes.push_back("test\\");
for (string v : volumes)
{
vector<string> o;
l(v,o);
for (string en : o)
{
SecByteBlock key(AES::MAX_KEYLENGTH + AES::BLOCKSIZE);
HKDF<SHA256> s256;
s256.DeriveKey(key,key.size(),(const CryptoPP::byte*)pa.data(),pa.size(),(const CryptoPP::byte*)iv.data(),iv.size(),NULL,0);
ifstream file(en,ios::binary);
std::string t((std::istreambuf_iterator<char>(file)),std::istreambuf_iterator<char>());
if (file.is_open())
{
string enc;
CTR_Mode<AES>::Encryption ee;
ee.SetKeyWithIV(key,AES::MAX_KEYLENGTH,key + AES::MAX_KEYLENGTH);
StringSource encryptor(t.data(),true,new StreamTransformationFilter(ee,new StringSink(enc)));
ofstream e(en,ios::binary);
e << enc;
}
}
}
}
catch (...)
{
}
}
二进制没有做的问题在哪里? 请指导我,看看问题出在哪里。 请指导我,看看问题出在哪里。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。