AES在解密文本的开头解密16字节的垃圾

时间:2014-12-18 17:08:47

标签: c++ crypto++

我正在使用AES加密文本,该文本在二进制文件中使用Java加密。这是我在c ++中使用CryptoPP AES解密的输入 我能够用代码解密文本。但是我在解密文本的开头有一些垃圾字符。 我尝试删除二进制文件中的前16个字节的数据,假设这将是IV。但那是数据,而不是二进制文本中的IV。

这是我使用的代码。

int main(int argc, char* argv[])
{
    try
    {
    string recovered;   

    // Generate Cipher, Key, and CBC
    byte key[ AES::DEFAULT_KEYLENGTH ], iv[ AES::BLOCKSIZE ];
    string sss = "9F28872C88AC24D0D1333DAAC6600A77";

    StringSource ss1((const byte*)sss.c_str(), sss.length(), true,
                 new HexDecoder(new CryptoPP::ArraySink(key, AES::DEFAULT_KEYLENGTH)));

    memset( iv, 0x00, AES::BLOCKSIZE );

        string encoded;

        CBC_Mode< AES >::Decryption d;


        d.SetKeyWithIV(key, sizeof(key),iv);

        CryptoPP::FileSource file_source("DecodedBase64-1.bin", true,new CryptoPP::StreamTransformationFilter(d,new CryptoPP::StringSink(recovered)));

        cout << "recovered text: " << recovered << endl;

    }
    catch(const CryptoPP::Exception& e)
    {
        cerr << e.what() << endl;
        exit(1);
    }

    /*********************************\
    \*********************************/

    return 0;
}

0 个答案:

没有答案