Come utilizzare correttamente dev / urandom per generazione casuale [chiuso]

-3

Esegui prima di main:

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

Accedi ai numeri generati casualmente

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;
}

L'output è sempre 0?

    
posta jamarcus_13 20.04.2018 - 22:48
fonte

1 risposta

1

Invece di leggere da un dump casuale, dovresti leggere direttamente da 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;
}
    
risposta data 20.04.2018 - 23:12
fonte

Leggi altre domande sui tag