2009-10-12 2 views
1

Недостаток SLL-пакета для Java предоставляет объект OpenSSL с использованием метода шифрования на основе пароля:еще не разрешено SSL и Open SSL, Java и C++, Common Ground?

encrypt ("des", password, data);

Этот способ считается совместимым с библиотекой OpenSSL C. Мой вопрос в том, какой метод OpenSSL C++ эквивалентен вышеуказанной Java?

Благодаря

+0

Относясь к моему open-ssl/java опыту: если он несовместим из-за-коробки, посмотрите внимательно на опции openssl, иногда есть опция, которая не очень хорошо документирована, но это сделает вывод OpenSSL полностью эквивалентным к java. Пример: при создании ключей эллиптических кривых добавьте «EC_KEY_set_asn1_flag (ec_key, OPENSSL_EC_NAMED_CURVE)»; использовать имя кривой (понимаемой java) вместо параметров кривой (понимаемой только openssl) в сгенерированном открытом ключе – laura

+0

Возможно, я могу быть более конкретным. В 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

+0

@laura OpenSSL препятствует использованию API более низкого уровня и ожидает, что каждый будет использовать API-интерфейсы EVP_PKEY .... Я не могу найти эквивалент 'EC_KEY_set_asn1_flag (ec_key, OPENSSL_EC_NAMED_CURVE)' в API EVP_PKEY. Вы знаете об этом API? –

ответ

0

EVP cipher functions взгляд, как ближайший параллельно.

+0

Я предполагаю из того, что я прочитал, что методы EVP - лучший способ использовать OpenSSL. Но какой режим OpenSQL/шифр - это еще не общедоступный объект OpenSSL Java, совместимый с? Я знаю, что существует перекрытие между Java и OpenSSL, но я не знаю, какие методы/режимы создают совместимые шифровки, и я все же новичок в этой области. – user186668

1

Шифры Not-yet-Commons-OpenSSL совместимы с командой «openssl enc». Ваш пример может быть расшифрован с помощью этой команды,

openssl enc -k password -a -d -des -in data.file 

Вы можете скопировать код из источника,

http://cvs.openssl.org/fileview?f=openssl/apps/enc.c&v=1.45.2.5

0

OpenSSL.encrypt() производит вывод base64 по умолчанию. Используйте OpenSSL.encrypt (alg, pwd, data, false), чтобы отключить это.

 Смежные вопросы

  • Нет связанных вопросов^_^