计算机程序中使用的随机数通常都是用真随机数做种子去生成的伪随机数。那么什么叫真随机数,如何去生成伪随机数,真伪随机的安全性方面都什么可以量化度量的差异吗?
真随机数
先看看如何获得真随机数?
自然界中的有很多不确定的现象,例如一片沙漠中的各个沙粒的重量,或者大气中分子的热运动轨迹,通过对这些现象的测量,就可以获得真随机数。
优质的真随机源头就是那些人类还无法把握其规律的自然现象。
伪随机数
计算机程序中一般都是用伪随机。
计算机首先要获得真随机数来做伪随机数算法的种子。真随机数可以从从自然现象中获取,例如读取一段时间耳机收到的噪音,或者内存条上的分子热运动信息。
为何需要种子呢?计算机程序运行的结果是确定性的,输出的结果是可以预测的,而且是可以重复的,所以通过计算机程序是不能生产随机数的。但是有了种子,就可以去衍生出很多足够随机的随机数,也就是伪随机的数。
为何需要生成伪随机数呢?如果程序运行需要很长或者很多的随机数,而能够获得的真随机数的长度和数量又都有限,那么就会用程序去生成伪随机数。
来举一个简单的伪随机生成算法的例子。如果真随机数是121,那么可以把真随机数相乘然后取中间数的方式来获得伪随机数。121乘以121是14641,那么去掉开头和末尾