我想加密测试文件夹中的所有文件

问题描述

我想加密测试文件夹中的所有文件。 这适用于文本文件,但不适用于二进制文件

代码

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 (将#修改为@)