我有两个简单的加密解密功能。该功能对于文本文件工作正常,我可以成功检索该文件。但是它会破坏二进制文件。如果我加密图像然后解密,则它会损坏。
bool Encrypter::FileEncrypter(std::string src, std::string dest)
{
try {
Botan::InitializationVector iv(enckey.substr(0,32));
Botan::SymmetricKey symKey(enckey.substr(32,32));
Botan::DataSource_Stream in(src.c_str(), true);
Botan::Pipe enc(Botan::get_cipher("AES-128/CBC", symKey, iv, Botan::ENCRYPTION), new Botan::DataSink_Stream(dest.c_str()));
enc.process_msg(in);
return true;
}
catch(std::exception &e){
return false;
}
}
bool Encrypter::FileDecrypter(std::string src, std::string dest)
{
try {
Botan::InitializationVector iv(enckey.substr(0,32));
Botan::SymmetricKey symKey(enckey.substr(32,32));
Botan::DataSource_Stream in(src.c_str(), true);
Botan::Pipe dec(Botan::get_cipher("AES-128/CBC", symKey, iv, Botan::DECRYPTION), new Botan::DataSink_Stream(dest.c_str()));
dec.process_msg(in);
return true;
}
catch(std::exception &e){
return false;
}
}
API说:
DataSink_Stream (const std::string &pathname, bool use_binary=false)
您可能需要将最后一个参数设置为true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句