我遇到了最棘手的问题,现在我已经难倒了一段时间。我使用cryptopp来解密从网站下载的文件。出于某种原因,解密每次都出错了,但是当我从程序中的文件或缓冲区解密时,它完美地工作。
以下是我最初加密它的方式。加密后我把它放在网站上。
const byte b_key[ ] = { '1', '0', 'F', 'D', 'F', '6', 'B', 'D', '6', 'A', '3', '8', 'A', '1', '9', 'A', '7', '5', 'A', 'F', '5', '0', 'D', 'B', 'C', '7', '0', 'A', 'A', '4', '5', '2' };
const byte b_iv[ ] = { 'A', '7', '0', 'B', '6', 'C', '6', '3', 'F', '4', 'C', 'D', 'E', '0', '9', '2' };
CryptoPP::CFB_Mode<CryptoPP::AES>::Encryption tmp ( b_key, 32, b_iv );
tmp.ProcessData ( &img[ 0 ], pBuffer, dwFileSize );
这是写函数
struct MemoryInfo
{
std::vector< byte > buffer;
};
static size_t WriteMemoryCallback ( void *contents, size_t size, size_t nmemb, void *userp )
{
size_t real_size = size * nmemb;
MemoryInfo *mem = static_cast< MemoryInfo * >( userp );
mem->buffer.resize ( mem->buffer.size () + real_size );
memcpy ( &mem->buffer[ mem->buffer.size () - real_size ], static_cast< byte* >( contents ), real_size );
return real_size;
}
那么我是如何解密它的。
std::vector< byte > img ( mem.buffer.size () );
CryptoPP::CFB_Mode<CryptoPP::AES>::Decryption tmp ( b_key, CryptoPP::AES::MAX_KEYLENGTH, b_iv );
tmp.ProcessData ( &img[ 0 ], static_cast< byte* >( mem.buffer.data () ), mem.buffer.size () );
不确定我在这里做错了什么,我真的不能去cryptopp的网站,目前一切都只是一个空白页面或告诉我我没有访问。
感谢任何帮助,谢谢。