установить закрытый и открытый ключ EC с OpenSSL из файлов - PullRequest
3 голосов
/ 12 апреля 2011

Я создаю программу, которая генерирует пару ключей priva и puba для отправителя и privb и pubb для получателя, затем я экспортирую каждую из них в файл, вот часть моего кода для отправителя:

BIGNUM *ppub_a,*ppriv_a;    
point = EC_KEY_get0_public_key(a);
ppub_a = EC_POINT_point2bn(group, point, POINT_CONVERSION_UNCOMPRESSED, ppub_a, ctx);
int kk, kk2;
ppriv_a = EC_KEY_get0_private_key(a);
kk = BN_print_fp(keypuba,ppub_a);
kk2 = BN_print_fp(keypriva, ppriv_a);

Мне нужна эта пара priva и puba и открытый ключ b (hex file pubb) для генерации ключа ECDH, а затем ключа AES.Затем зашифруйте файл.

Я не знаю, как получить и преобразовать этот шестнадцатеричный файл в открытый ключ для генерации ключа ECDH. Кто-нибудь может мне помочь?Thx

1 Ответ

0 голосов
/ 09 ноября 2011

Поскольку нигде в вашем примере кода вы не генерируете ключ или не указываете группу, я не могу быть уверен, в чем проблема:

«Я не знаю, как получить и преобразовать этот шестнадцатеричный файл ...» У вас проблемы с генерацией файла (например, keypuba пуста или не содержит ключа), проблемы с чтением файла или просто нет знаете, как действовать дальше?

FYI, openssl имеет функции преобразования от шестнадцатеричного до большого числа , однако вы, вероятно, не захотите вручную вычислять свои собственные параметры Эфемерного Диффи-Хеллмана, поскольку OpenSSL имеет подпрограмму ecies_encrypt() который заботится об этом, а также ecies_key_public_get_hex(EC_KEY *key), который уже принимает шестнадцатеричный ввод.

К сожалению, библиотека openssl была написана не как общий крипто-API, а как модуль для реализации SSL. Проблема № 1, когда разработчики пытаются использовать вызовы openSSL, заключается в том, чтобы знать, какой интерфейс им следует использовать и какой внутренний интерфейс им не следует использовать.

Если вы не являетесь экспертом и у вас нет веских причин для создания собственной версии ECIES, вам следует использовать встроенные вызовы.

...