微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决我想加密测试文件夹中的所有文件

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

代码

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 举报,一经查实,本站将立刻删除。