Estoy intentando generar una clave pública rsa a partir de un tipo de módulo char [], y ahora el exponente es RSA_F4 (65537); Pero cuando intento generar mi clave pública usando estos valores para "n" y "e", la RSA_public_encrypt, devuelve -1;Cómo crear una clave pública RSA a partir de un módulo y exponente char * sin signo 65537 (RSA_F4)
Gracias!
Mi código:
#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;
}
usted parece leer su módulo en 'x', que nunca se declara, dejando' modul' como 0. también nunca ponga el módulo en 'pubkey', por lo es probable que aún esté en blanco, lo que le da un error cuando Intenta llamar a 'RSA_public_encrypt'. Si desea ayuda real, debe publicar el código real que ha intentado compilar y ejecutar. –
Lo siento, pero mi última publicación fue insertada por error. –