我可以使用Crypto ++来解密aes-cbc-essiv:sha256(该文件由linux dm-crypt加密)

时间:2012-05-15 07:08:03

标签: c++ c cryptography crypto++

有没有人必须使用Crypto ++来解密文件,使用aes-cbc-essiv:sha256,它是由linux dm-crypt加密的? 我试图使用以下代码来解密文件。 但这是不正确的。 有没有人有过这方面的经验? 你能帮助我吗? 非常感谢。

void decrypt_file(const char* password,
                  const char* inputFileName, const char* outputFileName)
{
    byte pass[ AES::BLOCKSIZE ];
    byte iv[16];
    byte head_file[16]; 
    memset(iv, 0, 16);

    try
    {
      StringSource(password, true,
        new HashFilter(*(new CryptoPP::SHA256),
          new ArraySink(pass,AES::BLOCKSIZE)));

      CryptoPP::AES::Decryption
        aesDecryption(pass, CryptoPP::AES::DEFAULT_KEYLENGTH);

      CryptoPP::CBC_Mode_ExternalCipher::Decryption
        cbcDecryption( aesDecryption, iv );

      StreamTransformationFilter *decryptor =
        new StreamTransformationFilter(cbcDecryption,
          new FileSink(outputFileName),
          StreamTransformationFilter::BlockPaddingScheme::ZEROS_PADDING);

      FileSource(inputFileName, true, decryptor);
    }
    catch(CryptoPP::Exception &e)
    {
      printf("Exception \n");
      cout << "std::exception caught:" << endl << e.what();
      return;
    }
}

0 个答案:

没有答案