星期二, 2月 15, 2011

兩種在Linux下拿到亂數的方法

1. 寫個函數,從entropy拿。
linux kernel中有個entropy pool,這pool是由許多環境上的隨機因子造成的,
如Keyboard輸入的時間,滑鼠移動到的位置,disk存取的時間等等。
函式如下
unsigned long get_random(void){
unsigned long seed;
int fd;

fd = open("/dev/urandom", O_RDONLY);
if(fd == -1){
perror("open");
return 0;
}
if(read(fd, &seed, sizeof(seed)) < 0){ perror("read"); return 0; } if(close(fd)) perror("close"); return seed; }


2.另外一種方法,直接使用dd
$dd if=/dev/urandom of=/tmp/rand bs=1b count1
簡單又快速

沒有留言: