c++ - 加密和解密损坏的二进制文件

标签 c++ encryption cryptography botan

我有两个简单的加密解密函数。这些函数适用于文本文件,我可以成功检索文件。但它会破坏二进制文件。如果我加密图像然后解密,它就会损坏。

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

关于c++ - 加密和解密损坏的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35585855/

相关文章:

encryption - "PKCS#1 v2.0 encryption is usually called OAEP encryption"哪里可以确认?

encryption - 如何结合对称加密和非对称加密?

c++ - 我必须更改我的数字的最后一位和第一位,但不能仅对整数或循环使用函数。例如从12345到52341

c++ - 一段时间后 zmq 套接字不工作

c++ - 计算文本文件中的单个字母并打印结果 - 错误输出 c++

c++ - 有没有办法让这个 tolower( ... ) 代码更快?

c++ - 在 OS X 上实现微型加密算法

java - 如何最小化加密 token ?

security - 我可以使用 PBKDF2 生成 AES256 key 来加密和隐式身份验证吗?

javascript - 使用 PKCS7Padding 在 python 和 Node.js 之间进行 AES 加密