Недостаток SLL-пакета для Java предоставляет объект OpenSSL с использованием метода шифрования на основе пароля:еще не разрешено SSL и Open SSL, Java и C++, Common Ground?
encrypt ("des", password, data);
Этот способ считается совместимым с библиотекой OpenSSL C. Мой вопрос в том, какой метод OpenSSL C++ эквивалентен вышеуказанной Java?
Благодаря
Относясь к моему open-ssl/java опыту: если он несовместим из-за-коробки, посмотрите внимательно на опции openssl, иногда есть опция, которая не очень хорошо документирована, но это сделает вывод OpenSSL полностью эквивалентным к java. Пример: при создании ключей эллиптических кривых добавьте «EC_KEY_set_asn1_flag (ec_key, OPENSSL_EC_NAMED_CURVE)»; использовать имя кривой (понимаемой java) вместо параметров кривой (понимаемой только openssl) в сгенерированном открытом ключе – laura
Возможно, я могу быть более конкретным. В Java я с еще не достоянием SSL: encryptedString = OpenSSL.encrypt ("des-ede3-cbc", passwordBytes, dataBytes); В OpenSSL в C, я могу сделать что-то вроде этого: EVP_EncryptInit (& CTX, EVP_des_ede3_cbc(), (Const символ без знака *) MyKey, внутривенно); EVP_EncryptUpdate (& ctx, ciphertext, & out_len, (const unsigned char *) plaintext, in_len); EVP_EncryptFinal (& ctx, & ciphertext [out_len], & out_len); Моя проблема заключается в том, что они дают совершенно разные зашифрованные результаты. Фактически результат java в 3 или 4 раза больше байтов. – user186668
@laura OpenSSL препятствует использованию API более низкого уровня и ожидает, что каждый будет использовать API-интерфейсы EVP_PKEY .... Я не могу найти эквивалент 'EC_KEY_set_asn1_flag (ec_key, OPENSSL_EC_NAMED_CURVE)' в API EVP_PKEY. Вы знаете об этом API? –