Próbuję wygenerować klucz publiczny RSA z modułu typu char [], a teraz wykładnikiem jest RSA_F4 (65537); Ale gdy próbuję wygenerować mój klucz publiczny przy użyciu tych wartości dla "n" i "e", RSA_public_encrypt, return -1;Jak utworzyć klucz publiczny RSA z unsigned char * modulus i wykładnika 65537 (RSA_F4)
Dzięki!
Mój kod:
#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;
}
pojawiasz się czytać moduł w 'x', która nigdy nie deklarują, pozostawiając' modul' jako 0. ty też nigdy umieścić moduł w 'pubkey', więc prawdopodobnie nadal jest puste, co powoduje błąd, gdy y spróbuj wywołać 'RSA_public_encrypt'. Jeśli potrzebujesz prawdziwej pomocy, musisz opublikować prawdziwy kod, który próbujesz skompilować i uruchomić. –
Przepraszam, ale mój ostatni wpis został wstawiony za pomyłkę. –