Как создать открытый ключ RSA из модуля без знака char * и показателя степени 65537(RSA_F4)

Я пытаюсь сгенерировать открытый ключ rsa из модуля типа char[], и теперь я показатель степени RSA_F4 (65537); Но когда я пытаюсь сгенерировать свой открытый ключ, используя эти значения для «n» и «e», RSA_public_encrypt возвращает -1;

Спасибо!

Мой код:

#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <crypt.h>
#include <iostream>
#include <stdlib.h>
#include <openssl/rsa.h>
#include <openssl/aes.h>
#include <openssl/opensslconf.h>
#include <openssl/engine.h>
#include <openssl/pem.h>
#include <openssl/rc4.h>

using namespace std;
int main(void)
{

//modulus in format char hex;
char key[] = "C0E7FC730EB5CF85B040EC25DAEF288912641889AD651B3707CFED9FC5A1D3F6C40062AD46E3B3C3E21D4E71CC4800C80226D453242AEB2F86D748B41DDF35FD";

    char palavra[] = "teste";
    char crip[512];
    int ret;
    RSA * pubkey = RSA_new();
    BIGNUM * modul = BN_new();
    BIGNUM * expon = BN_new();

    BN_hex2bn(&modul, (const char *) key);
    BN_hex2bn(&expon, "010001");

    cout << "N KEY: " << BN_bn2hex(modul) << endl;
    cout << "E KEY: " << BN_bn2hex(expon) << endl;

    pubkey->n = modul;
    pubkey->e = expon;

    cout << "N PUB KEY: " << BN_bn2hex(pubkey->n) << endl;
    cout << "E PUB KEY: " << BN_bn2hex(pubkey->e) << endl;

    if (RSA_public_encrypt(strlen((const char *) palavra), (const unsigned char *) palavra, (unsigned char *) crip, pubkey, RSA_PKCS1_PADDING ))
    {
        printf("ERRO encrypt\n");
    }
    else
    {
        printf("SUC encrypt\n");
    }
return 0;
}
6
задан David Viana 24 May 2012 в 18:13
поделиться