Я довольно новичок в программировании с открытым SSL. Вот фрагмент кода, который должен генерировать случайное число, а затем преобразовываться в шестнадцатеричный формат.
Код компилируется, однако, когда я запускаю файл, я получаю сообщение Segmentation Error: Core Dumped.
#include<stdio.h>
#include<iostream>
#include<openssl/aes.h>
#include<openssl/bn.h>
#include<openssl/rand.h>
using namespace std;
int main()
{
int i;
void *buf;
long *p;
*p=67563;
buf=p;
RAND_seed(buf,9);
BIGNUM *rnd
i= BN_rand( *rnd, 128,0,0);
BN_bn2hex(rnd);
}
В вашем коде есть неинициализированные указатели! Они, скорее всего, будут указывать на недопустимую память, в которую вы не можете писать, вызывая ошибки сегментации.
Переменные, вызывающие озабоченность p
а также rnd
:
long *p; // p is not initialized, pointing to invalid memory
*p = 67563; // Writing to invalid memory => SEGFAULT
Попробуйте это вместо этого:
int i;
void *buf;
long p; // NO POINTER!
p=67563;
buf=&p; // Let buf point to where p is (valid address on stack)
RAND_seed(buf,9);
BIGNUM rnd; // NO POINTER!
i= BN_rand( &rnd, 128,0,0); // Pass pointer to rnd to BN_rand
BN_bn2hex(&rnd); // Pass pointer to rnd to BN_bn2hex
Других решений пока нет …