Random-Number-Generator
gpg –gen-random 質量等級:越高“越好”嗎?
GNU Privacy Guard 手冊頁
gpg --gen-random 0|1|2 count
對使用命令有這樣的說法:發出給定質量級別 0、1 或 2 的count隨機字節。如果**count未給出或為零,則將發出無限序列的隨機字節。如果與
--armor
輸出一起使用,則將進行 base64 編碼。請不要使用此命令,除非您知道自己在做什麼;它可能會從系統中移除寶貴的熵!我想知道“質量水平”是什麼意思。2 比 0“更好”(即更隨機)嗎?一個級別比另一個級別有多少“更隨機”?
背景:我在 Linux Journal 上的一篇文章中遇到了這個命令,該文章說明了使用
gpg
’--gen-random
命令生成隨機密碼。我想擁有盡可能隨機的密碼,所以我想知道什麼“質量級別”最適合這個目的。
這是一個很難回答的問題。確切的答案只能在 的原始碼中找到
gpg
。但是,我仍然可以使用我找到的郵件回答您的問題(從 2013 年開始,詳細資訊可能已更改)。2 比 0“更好”(即更隨機)嗎?
是的,2 比 0 和 1“更好”。
根據連結的郵件,質量級別決定了讀取
/dev/urandom
和/dev/random
回答查詢的字節數。正如郵件中顯示的那樣,0 和 1 實際上是相同的(這可能現在已經改變了)並且 gpg 只會用請求的新字節數來回答您的查詢
/dev/urandom
。2 但是不一樣。它使用
/dev/random
,這意味著您對輸出的質量和熵有更高的保證(因為您可能需要等待一段時間,如果這種權衡確實值得,那是另一個問題)。更重要的是,它請求的字節/dev/random
數比您查詢的要多得多,即近 19 倍,並以某種方式對它們進行後處理。因此,即使/dev/random
沒有為您提供高質量的隨機字節,結果的熵也很高。