美文网首页
2019-11-05 随机生成字符串/dev/urandom,

2019-11-05 随机生成字符串/dev/urandom,

作者: AK蜗牛 | 来源:发表于2019-11-05 21:54 被阅读0次

    1、/dev/random和/dev/urandom是linux系统提供的随机伪设备,其作用是提供非空的随机字节数据流,多用于SSH, SSL的keys等。
    这两个的区别是什么?
    首先我们要理解一个高大上的词: 熵(Entropy)拼音(Shang)。熵被用于计算一个系统中的失序现象,或者说混乱程度。「熵增加原理」的意思是:在没有外界影响的情况下(孤立系统)无法利用的能量会越来越多,而且这个过程无法自发逆转。 真是一个令人沮丧的理论(闲话少说)
    Linux计算熵,是通过系统的环境噪音自动生成,这里的环境噪音可以是键盘,鼠标,内存,文件,进程等等。
    下面的命令可以查看系统熵

    #查看系统熵池容量:
    axing@LD8:~$ cat /proc/sys/kernel/random/poolsize
    4096
    #查看系统熵池中拥有的熵数
    axing@LD8:~$ cat /proc/sys/kernel/random/entropy_avail
    2600
    #查看从熵池中读取的阈值
    axing@LD8:~$ cat /proc/sys/kernel/random/read_wakeup_threshold
    64
    

    当entropy_avail中的值小于阈值,读取/dev/random就会被阻塞。
    现在来看/dev/random与/dev/urandom的区别。
    前一个/dev/random叫做真随机数生成器,会消耗熵值来产生随机数,同时在熵耗尽的情况下会阻塞,知道新的熵生成。
    /dev/urandom叫做伪随机数生成器,它根据熵池中的一个随机种子来产生一系列伪随机数。但如果在系统启动阶段使用 /dev/urandom ,则可能存在熵池中还不存在任何熵的情况,这时候用 /dev/urandom 产生的随机数是可预测的。

    2、tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。
    tr [-cdst][--help][--version][第一字符集][第二字符集]
    tr的各种参数就不一一列举了,举例子:

    cat sample.txt | tr a-z A-Z   
    cat sample.txt | tr [:lower:] [:upper:]
    

    这两个命令都是将sample.txt文件的内容小写字母全部转换成大写字母。

    3、head/tail命令
    从头/尾显示
    head -n 3 <file name>表示显示前三行;
    head -c 30 <file name>表示显示前30个字符。

    4、生成随机变量

    axing@LD8:~$ RD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24`
    axing@LD8:~$ echo $RD
    uT4XVgr8bxXOiHRmQ1L4ETiW
    

    可以看到随机生成了24位的变量放到RD里。

    相关文章

      网友评论

          本文标题:2019-11-05 随机生成字符串/dev/urandom,

          本文链接:https://www.haomeiwen.com/subject/tryebctx.html