У меня есть код, который работает на более чем 10 различных ПК, но не работает на указанном c P C, который я не уверен, почему. Исключение составляет StreamTransformationFilter: invalid PKCS #7 block padding found
Данные шифруются в PHP с использованием openssl_encrypt с помощью метода AES-256-CB C, расшифровка выполняется на стороне клиента через CryptoPP. Код выглядит так:
std::string decrypt( const std::string& str_in, const std::string& key, const std::string& iv )
{
std::string str_out;
try
{
CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption decryption( ( byte* )key.data(), key.size(), ( byte* )iv.data() );
CryptoPP::StringSource decryptor( str_in, true,
new CryptoPP::StreamTransformationFilter( decryption,
new CryptoPP::StringSink( str_out )
)
);
}
catch ( const CryptoPP::Exception& ex )
{
MessageBox( NULL, ex.what(), qxor( "Decryption error" ), MB_ICONERROR | MB_OK );
}
return str_out;
}
Я не понимаю, почему это работает на всех, кроме компьютера 1 человека. Они имеют ключевое значение, и iv не могут быть неправильными, так что об этом не может быть и речи, я был бы признателен за любые советы о том, как отладить эту проблему, так как я был в тупике в течение долгого времени.