Cómo usar correctamente dev / urandom para generación aleatoria [cerrado]

-3

Se ejecuta antes de main:

 d -c 30 /dev/urandom > random.bytes   

Accede a los números generados aleatoriamente

int main() {
   FILE *fp;

   int fd = open("random.bytes",O_RDONLY);

    fp = fopen("file.txt" , "r");
   if (fd < 0) {
        fprintf(stderr, "%s\n", strerror(errno));

    }

    char buffer[8];
    //int error =  read(fd,buffer,sizeof(buffer) );

    if( fgets (buffer,sizeof(buffer), fp)!=NULL ) {
          /* writing content to stdout */
          puts(buffer);
             }
   fclose(fp);


    if ( error < 0) {
              fprintf(stderr, "%s\n", strerror(errno));

                }
    uint8_t tid = atoi(buffer);
    printf("%d\n",tid); 

    return 0;
}

¿La salida siempre es 0?

    
pregunta jamarcus_13 20.04.2018 - 22:48
fuente

1 respuesta

1

En lugar de leer un volcado aleatorio, debe leer directamente de urandom:

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

int main(){
        int i;
        unsigned char buffer[8];
        int fd = open("/dev/urandom", O_RDWR);
        read(fd, buffer, 8);
        //buffer now contains the random data
        close(fd);
        for(i = 0; i < 8; ++i)
                printf("%02X", buffer[i]);
        printf("\n");
        return 0;
}
    
respondido por el user 20.04.2018 - 23:12
fuente

Lea otras preguntas en las etiquetas