接續前一個話題。。。關於 GnuPG 的 RNG 漏洞,如果以 Bash shell 來看,我們要如何處理亂數呢?
方法一,使用 RANDOM 變數,即 Bash 內建的 RNG:
RANDOM=$$ echo $RANDOM
這個方法太 low 了,來一個比較會嚇唬人的。
方法二,使用 Linux 核心提供的亂數機制:
head -1 /dev/urandom | od -N 2 | head -1 | awk '{print $2 * 1}'
喔,這樣看起來是不是比較有水準多了?(讓人看不懂,就是有水準?話說,學術界的爛招,不都是如此麼?!)
我們就用方法二來產生 50 個亂數,並把它排序:
for ((i=1; i<=50; i=i+1)) do head -1 /dev/urandom | od -N 2 | head -1 | awk '{print $2 * 1}' >> rng.txt done cat rng.txt | sort -n > rng-sorted.txt
隨機取樣、排序的結果如下:
416 7167 10255 10427 15603 16413 21670 24066 24616 26126 32143 33224 37245 42532 43157 44521 45752 47347 52225 53023 54754 57454 57477 65147 72265 72560 74210 74337 75072 75516 106362 114233 114630 116303 117764 120753 125224 130032 131464 136452 145305 151467 155240 156231 160640 163325 166507 167476 172230 176322
好啦,我們人們追求的表面「秩序」(排序)已經達成了。。。
但真正的問題來了!怎樣才可以把這些資料「弄亂」??
許多時候,把資料弄得夠亂,才是我們真正需要的喔!
這裡先賣個關子,有興趣的朋友,可以試作看看。。。或許,各種創意的方法都會出現喔! 😉