Открыть функцию SSL Rand

Я довольно новичок в программировании с открытым 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);

}

0

Решение

В вашем коде есть неинициализированные указатели! Они, скорее всего, будут указывать на недопустимую память, в которую вы не можете писать, вызывая ошибки сегментации.

Переменные, вызывающие озабоченность 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
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector