2009-11-18 4 views
5

Я использовал команду openSSL для создания 2 файлов: 1 для открытого ключа RSA & 1 для закрытого ключа RSA. Как восстановить ключи RSA с помощью C?Загрузить ключи RSA из файлов

В частности, у меня есть эти функции:

RSA_public_encrypt(read_num, in_buf, out_buf, public_key, RSA_PKCS1_PADDING); 
RSA_private_decrypt(read_num, in_buf, out_buf, private_key, RSA_PKCS1_PADDING); 

4-й аргументы, public_key и private_key, должны быть типа RSA. Но то, что у меня есть только 2 текстовые файлы, создаваемые командой OpenSSL:

File 1: 
-----BEGIN RSA PRIVATE KEY----- 
MIICXAIBAAKBgQDP78B9GZ9ZFG6OnZ1PU+9BPoyLRuYJr3rSX470XjbJhmlq9DTn 
NvG1pxWxrd5tjlmMWD4AkHqD7E87AafvQEiABdUXwf30LatT1w6tlyQWkM/HCN5k 
.... 
npF+nDtKmGteLJVp5x7HHMnZaRbvcV2oUtgdmIMbqVYgbPkwO2tUfUPA6zg1fzhy 
nNzQ35e/Hi0fgSHZib0CQEe4e4txXzkezomkWqwuGL8Qqp8iCbBn44mzxXTBvAQl 
muFu93C/ULMzRoq4cpPgl3sS0F9s7+zR18SERerFvfc= 
-----END RSA PRIVATE KEY----- 

File 2: 
-----BEGIN PUBLIC KEY----- 
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP78B9GZ9ZFG6OnZ1PU+9BPoyL 
RuYJr3rSX470XjbJhmlq9DTnNvG1pxWxrd5tjlmMWD4AkHqD7E87AafvQEiABdUX 
wf30LatT1w6tlyQWkM/HCN5kmK5WzPUYbI1q5xGy7Eox9sJ6cNwMUOT+MSDhErgB 
gkgF6uG1yGrxuEVk/QIDAQAB 
-----END PUBLIC KEY----- 

Теперь я прочитал эти 2 файла в полукокса [] массив. Что мне нужно сделать, это преобразовать эти 2 массива в 2 ключа RSA (открытый ключ у клиента & private_key на сервере), чтобы я мог использовать функции RSA_public_encrypt и RSA_private_decrypt.

Спасибо.

+0

что вы имеете в виду путем восстановления, восстановления = читать? – RageZ

+3

Опасайтесь, вы не должны раскрывать свой секретный ключ, даже частично! – mjv

+0

[введите ссылку здесь] (http://stackoverflow.com/questions/30621457/how-to-translate-pem-public-key-into-openssl-rsa-structure/39216814#39216814) Посмотрите на это сообщение – ANDRE

ответ

9

Посмотрите на функции ввода/вывода в OpenSSL crypto library, в частности PEM functions

RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **x, 
            pem_password_cb *cb, void *u); 

RSA *PEM_read_RSAPublicKey(FILE *fp, RSA **x, 
            pem_password_cb *cb, void *u); 
+1

Считыватель открытого ключа должен быть 'PEM_read_RSA_PUBKEY', если вы имеете дело с форматом PEM. См. Http://stackoverflow.com/questions/7818117/why-i-cant-read-openssl-generated-rsa-pub-key-with-pem-read-rsapublickey –

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