Bash
Solaris中的隨機數生成?
在 Solaris 中生成隨機數的最佳方法是什麼?
我似乎找不到一個好的答案。大多數結果在我的環境中不起作用。有一個變數或命令 RAND 看起來合乎邏輯,它會以類似於我在大多數搜尋中看到的 $RANDOM 的某種方式工作,但它總是產生 0。
我找到了這個命令
od -X -A n /dev/random | head -2
這似乎很隨機,但返回格式很奇怪(對我來說)。
140774 147722 131645 061031 125411 053337 011722 165106 066120 073123 040613 143651 040740 056675 061051 015211
目前使用:
-bash-3.2$ uname -a SunOS XXXXXXXXX 5.10 Generic_150400-29 sun4v sparc SUNW,SPARC-Enterprise-T5120
$RANDOM
在 ksh 和 bash 中可用,但在/bin/sh
. 該值是 0 到 32768 之間的隨機數,不適合加密使用。讀取
/dev/random
會生成適合加密使用的隨機字節流。由於這些是任意字節,可能包括空字節,因此您不能將它們儲存在 shell 變數中。您可以將$n
字節儲存在文件中</dev/random dd ibs=1 count=$n >rnd
您可以使用
od
八進製或十六進制值將這些字節轉換為可列印的表示。如果您發現輸出“奇怪”,那麼也許您應該選擇不同的od
選項。獲得可列印表示的另一個選項是呼叫
uuencode
生成 Base64:</dev/random dd ibs=1 count=$n | uuencode -m _ | sed -e '1d' -e '$d'