2009-08-05 74 views
4

我正在使用桌面應用程序,並希望使用碰巧可用的任何硬件隨機數字生成器,但我不希望用戶必須執行任何令人困惑的設置才能使用它。它的Java/Clojure基於Java世界中的某些東西將會很好,儘管我願意與任何東西一起工作。知道這樣做的任何程序嗎?他們是跨平臺嗎?以編程方式使用硬件隨機數字發生器

+1

什麼操作系統? GNU/Linux內置有'/ dev/random'設備。 – 2009-08-05 20:35:24

+0

'/ dev/random'是一個軟件生成器;它僅僅使用與硬件相關的噪聲作爲源。這個問題是關於輸出隨機數據的實際硬件設備,這些數據是通過物理隨機過程生成的 – Cascabel 2009-08-05 20:41:16

+0

@Jefromi:你怎麼知道的? – 2009-08-05 21:08:14

回答

6

您應該使用Java SecureRandom類。用戶可以通過設置其preference order來覆蓋硬件RNG的默認算法選擇。這適用於所有的Java應用程序,包括你的。

+0

推論是應用程序需要一個SecureRandom引擎類,以適應可能「恰好可用」的每個設備。除非那裏的人已經爲常見設備維護了這樣的類庫,否則這是一項艱鉅的任務! – 2009-08-05 22:54:06

+0

或者可以有一個SecureRandom引擎使用操作系統工具與硬件RNG進行交互 – bdonlan 2009-08-06 01:46:22

+0

@bdolan:我認爲這不會起作用。 AFAIK沒有連接RNG硬件的具體標準,也沒有標準的OS級服務。 – 2009-08-06 09:31:03

2

這取決於您需要生成的隨機數的質量。具體而言,您需要購買多少entropy

如果您確實需要一些不依賴於可預測時鐘的硬核隨機數,您可能需要查看第三方可用的生成器。

http://en.wikipedia.org/wiki/Hardware_random_number_generator

有些使用熱能,等等,以增加每比特的熵。

+0

OP的問如何與任何可用的接口連接,當然?這裏熵的數量是多少? – bdonlan 2009-08-05 20:40:00

+1

香草機中只有這麼多選項可用。我只是讓他知道,所有的隨機數字並不相同,並試圖告訴他一些替代方案。我的答案可能不是他正在尋找的,但我認爲這與他的問題有關。 – 2009-08-05 20:42:01

+0

簡短的回答是「足以讓我的用戶數據安全地抵禦所有的攻擊,但不包括折磨」 – 2009-08-05 21:49:13