Linux高效生成随机数的函数(linux随机数函数)
实现
随机数在生成加密算法、加密码、日期序列号、句子组合和密钥等密码学,游戏、统计学、数学、模拟等领域有广泛的应用。Linux有自带的随机数生成函数:/dev/random及/dev/urandom,其中/dev/random获取的则是安全的随机数,而/dev/urandom获取的则是非安全的随机数。可以利用两者来获取高效的随机数在Linux中。
/dev/random主要通过分析系统的噪声信号生成随机数,最初的背景噪声默认是温度数据,例如,可以创建一个随机数文件:
$ cat /dev/random > /tmp/random-data
随机数文件生成后,可以开始分析和产生有着充足随机性的可信数据,该数据可用来生成安全密钥,执行证书签名等任务:
$ jot -r -p 8 1 256 | shasum > /tmp/random-data
/dev/urandom主要是利用特殊的伪随机数生成器来生成的随机数,它的生成只需要很少的系统资源,而无需耗费太多计算能力,也会节省系统开销,同时可以得到足够的随机数,例如随机选择生成一个8位长密码:
$ cat /dev/urandom | tr -dc 'a-zA-Za-z' | head -c 8
此外,/dev/urandom还可以通过生成较长的内容用来创建随机种子:
$ dd if=/dev/urandom of=/tmp/random-seed count=1
总之,Linux自带的/dev/random和/dev/urandom函数可以迅速有效地生成随机数。它们可以用来生成安全的加密码、日期序列号、句子组合和密钥、随机种子等,有着广泛的应用。