Piszę program w C++ Builder 2007 korzystając z biblioteki Crypto++.
Szyfrowanie/deszyfrowanie tekstu realizuję w ten sposób:
delete new StringSource(InputText, true, new StreamTransformationFilter(*(new CBC_Mode<Serpent>::Encryption(Key, SHA256::DIGESTSIZE, IV)), new StringSink(OutputText)));
Wszystko działa poprawnie do momentu, aż w kodzie pojawi się ECIES.
ECIES< ECP, IncompatibleCofactorMultiplication, true >::Encryptor *ECEncryptor = new ECIES< ECP, IncompatibleCofactorMultiplication, true >::Encryptor(>>>Tu podaję klucz publiczny<<<);
Jeśli ten fragment kodu jest napisany, to zdeszyfrowanie wiadomości zaszyfrowanej algorytmem Serpent jest niemożliwe (wyjątek, InvalidCiphertext). Podobne błędy występują dla niektórych szyfrów, AES działa dobrze. Co można z tym zrobić, żeby nie rezygnować z Serpent?
PS. Klucze generowane są za pomocą PKCS5_PBKDF2_HMAC<H>, gdzie H to f-cja haszująca, w moim przypadku SHA-512.