看板 java 關於我們 聯絡資訊
版上的前輩們大家好 小弟目前正在研究TRNG與PRNG 目前對TRNG的了解就是收集物理現象(大氣噪音、元素衰退或電腦系統中的 隨機事件,像滑鼠位移、網路訊號等...)並轉換成bits,最後再轉換成數字, 所產生的隨機數列無法被重現。Linux提供了/dev/random的隨機亂數產生方式, 就是藉由蒐集系統的隨機事件到Entropy Source,並將這些bits轉換成數字。 而PRNG則是給定初始種子(seed),使用數學算式來產生隨機亂數,與TRNG 最大的差異就在於數列是被決定好的,只要種子一樣,數列就可以重現。 目前知道java.util.Random是使用線性同餘(LCG)來產生隨機亂數,是屬於PRNG 而java.Security.SecureRandom目前是知道在Linux上是會用到/dev/random或/dev/urandom 但對於他的隨機數生成原理卻不太清楚,Google老半天也找不到相關的原理, 大部份都在教如何使用而已 有前輩們知道其生成的原理嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.211.23.169 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1498836364.A.00F.html
ssccg: SecureRandom是JCA的一部分,實際實作要看provider 07/01 00:34
ssccg: 剛好版上就有一篇 #1HLoCRRG 07/01 00:35
ssccg: 基本上都是用OS提供的random當seed,再用某種PRNG展開 07/01 00:36
sky800507: 感謝,文章很有幫助。另外想問某種PRNG是? 07/03 20:40