Как читать / dev / urandom в массив - PullRequest
0 голосов
/ 06 марта 2020

У меня есть программа C, которая читает случайное число из / dev / urandom в массив как ключ 256 бит, но, похоже, ничего не читается. Что случилось с моей программой?

#include <stdlib.h>

#define LEN 32 // 256 bits
void main()
{

    unsigned char *key = (unsigned char *) malloc(sizeof(unsigned char)*LEN);
    FILE* random = fopen("/dev/urandom", "r");
    fread(key, sizeof(unsigned char)*LEN, 1, random);
    fclose(random);
}

1 Ответ

1 голос
/ 06 марта 2020

Пожалуйста, проверяйте ваши инструкции на каждом шагу:

#define LEN 32 // 256 bits

int main(void)
{
    unsigned char *key = malloc( (sizeof(unsigned char)*LEN) + 1);

    if ( NULL == key )
    {
        printf("Error on malloc");
        return -1;
    }

    memset (key, 0, (sizeof(unsigned char)*LEN) + 1 );

    FILE* random = fopen("/dev/urandom", "r");
    if ( NULL == random )
    {
        printf("Error on fopen");
        free (key);
        return -1;
    }

    fread(key, sizeof(unsigned char)*LEN, 1, random);

    printf("|%s|\n", key);

    free (key);
    fclose(random);
    return 0;
}
...