版上的前輩們大家好
小弟目前正在研究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老半天也找不到相關的原理,
大部份都在教如何使用而已
有前輩們知道其生成的原理嗎?