2017-04-26 3 views
1

Ich versuche, eine Zeichenfolge zu entschlüsseln, die mit AES in CBC_Mode chiffriert wird. Ich sehe korrekte Daten im Ergebnis, aber es ist durch Füllbytes verunreinigt. Mein erster Versuch war einen Redirector zu verwenden, wie in this Thread vorgeschlagen:Entschlüsselung eines std :: string hat zusätzliche Füllbytes?

std::string result_; 
CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption decrypt_; 
... 

void decrypt(std::string cipheredText) 
{ 
    try 
    { 
     CryptoPP::MeterFilter meter(new CryptoPP::StringSink(result_)); 

     CryptoPP::StringSource pipeline(
      cipheredText, 
      true, 
      new CryptoPP::StreamTransformationFilter(
       decrypt_, 
       new CryptoPP::Redirector(meter), 
       CryptoPP::StreamTransformationFilter::PKCS_PADDING)); 
    } 
    catch (CryptoPP::Exception&) 
    { } 
} 

Aber ich immer noch dieses Paddingbytes bekommen. Was mache ich falsch? Kann mir bitte jemand helfen?

Antwort

1

OK, endlich habe ich meinen törichten Fehler gefunden. Es hat nichts mit Füllbytes zu tun. Der Grund für diese zusätzlichen Bytes in meinem Entschlüsselungsergebnis ist einfach, dass StringSource resultierende Bytes an das Ziel anfügt. Ich habe vergessen, meine Zielvariable zu löschen und so wuchs es auf ...

Verwandte Themen