作者sky800507 (B翰)
看板java
標題[問題] SecureRandom的原理是什麼?
時間Fri Jun 30 23:26:02 2017
版上的前輩們大家好
小弟目前正在研究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: 基本上都是用OS提供的random當seed,再用某種PRNG展開 07/01 00:36
→ sky800507: 感謝,文章很有幫助。另外想問某種PRNG是? 07/03 20:40