重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
有两种方法可以获取内核随机数。
创新互联从2013年创立,是专业互联网技术服务公司,拥有项目成都网站建设、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元二道做网站,已为上家服务,为二道各地企业和个人服务,联系电话:13518219792
根据博客园官网查询,一种是通过内核导出的随机数接口,另一种是通过特殊的设备文件。
Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。
如何设置种子呢?一般就 用time函数返回当前时间即可。一般来讲,这样的做法基本上就可以了,因为虽然我们用的是随机数,但是由于种子不同,从上亿的数中去猜测我们的种子几乎 是不可能的。例如:#include #include #include #define random(x) (rand()%x) void main() { srand((int)time(0));for(int x=0;x 0) { unsigned int r;int i;for (i = 0; i 512; i++) { read (fd, r, sizeof (r));ticks += r;} close (fd);} srand (ticks);printf("init finished ");} unsigned int new_rand () { int fd;unsigned int n = 0;fd = open ("/dev/urandom", O_RDONLY);if (fd 0) { read (fd, n, sizeof (n));} close (fd);return n;} int main () { int n, i;init_random ();n = rand ();printf ("n=%d ", n);for(i=0;i
linux内核自1.3.30版本以来实现了一个随机数产生器,从理论上说它能产生真正的随机数,该随机数产生器是从设备驱动收集电路上的环境噪音放入熵池,它的实现代码在drivers/char/random.c中,自己去看吧
1、/dev/random和/dev/urandom是linux系统提供的随机伪设备,其作用是提供非空的随机字节数据流,多用于SSH, SSL的keys等。
这两个的区别是什么?
首先我们要理解一个高大上的词: 熵(Entropy)拼音(Shang)。熵被用于计算一个系统中的失序现象,或者说混乱程度。「熵增加原理」的意思是:在没有外界影响的情况下(孤立系统)无法利用的能量会越来越多,而且这个过程无法自发逆转。 真是一个令人沮丧的理论(闲话少说)
Linux计算熵,是通过系统的环境噪音自动生成,这里的环境噪音可以是键盘,鼠标,内存,文件,进程等等。
下面的命令可以查看系统熵
当entropy_avail中的值小于阈值,读取/dev/random就会被阻塞。
现在来看/dev/random与/dev/urandom的区别。
前一个/dev/random叫做 真随机数生成器 ,会消耗熵值来产生随机数,同时在熵耗尽的情况下会阻塞,知道新的熵生成。
/dev/urandom叫做 伪随机数生成器 ,它根据熵池中的一个随机种子来产生一系列伪随机数。但如果在系统启动阶段使用 /dev/urandom ,则可能存在熵池中还不存在任何熵的情况,这时候用 /dev/urandom 产生的随机数是可预测的。
2、tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
tr [-cdst][--help][--version][第一字符集][第二字符集]
tr的各种参数就不一一列举了,举例子:
这两个命令都是将sample.txt文件的内容小写字母全部转换成大写字母。
3、head/tail命令
从头/尾显示
head -n 3 file name表示显示前三行;
head -c 30 file name表示显示前30个字符。
4、生成随机变量
可以看到随机生成了24位的变量放到RD里。
echo `date +"%Y-%m-%d %H:%M:%S"` begin 文件路径
echo $RANDOM 文件路径
shell中有一个环境变量为$RANDOM,实际的取值范围为:0-32767
echo `date +"%Y-%m-%d %H:%M:%S"` '我是中文' $RANDOM 文件路径
MAXCOUNT=10 #这是变量
count=1 #同上
number=$RANDOM
FLOOR=0
RANGE=999 #随机数范围,1-999之间,可以改
number=0
while [ "$number" -le $FLOOR ]
do
number=$RANDOM
let "number %= $RANGE"
done
echo "$number"
这样就可以产生随机数了.....,没时间了,.别的没法一一注释,自己看