欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Linux系统下产生随机数的方法

程序员文章站 2022-04-12 21:14:06
Linux系统下产生随机数的方法 通过系统环境变量($RANDOM)实现 RANDOM 的随机数范围为 0~32767,因此,加密性不是很好,可以通过在输出的随机数后增加加密字符串(就...

Linux系统下产生随机数的方法

通过系统环境变量($RANDOM)实现

Linux系统下产生随机数的方法

RANDOM 的随机数范围为 0~32767,因此,加密性不是很好,可以通过在输出的随机数后增加加密字符串(就是和密码生成有关的一个字符串)的方法解决,最后再一起执行 md5sum 操作并截取结果的后 n 位,这样以来,就无法根据随机数范围 0~32767 来猜出具体结果了

校验与核实校验和(checksum)程序用来从文件中生成校验和密钥,然后利用这个校验和密钥核实文件的完整性,一份文件可以通过网络或任何存储介质分发到不同的地点,出于多种原因,数据可能在传输过程中丢失了若干位,从而导致文件损坏,这种错误通常发生在从 Internet 上下载文件时,或者通过网络传输文件时,或者遭遇 CD 光盘损坏等.因此,我们需要采用一些测试方法来确定接收到的文件是否存在错误,用于文件完整性测试的特定密钥就被称为校验和。我们对原始文件和接收到的文件都进行校验和计算,通过对比两者的校验和,就能够核实接收到的文件是否正确,如果校验和相等,就意味着我们接收到了正确的文件,否则用户就不得不重新发送并再次比对校验和。校验和对于编写备份脚本或系统维护脚本来说非常重要,因为它们都会涉及通过网络传输文件,通过使用校验核实,我们就可以识别出那些在网络传输过程中出现损坏的文件,并重发这些文件,从而确保数据的完整性最知名且使用最为广泛的校验和技术是 md5sum 和 sha1sum 它们对文件内容使用相应的算法来生成校验和

Linux系统下产生随机数的方法

如上所示,md5sum 是一个 32 个字符的十六进制

将输出的校验和重定向到一个文件,然后用这个 MD5 文件核实数据的完整性

按照下面的方法用生成的文件核实数据的完整性:

Linux系统下产生随机数的方法

通过 openssl 产生随机数令数字与大小写相结合,并且带上特殊字符,可以达到很长的位数,这样的随机数很安全

Linux系统下产生随机数的方法

通过时间(date)获得随机数

Linux系统下产生随机数的方法

shell 脚本随机数实战案例(面试经典题)

#!/bin/bash

#破解 RANDOM 随机数
#已知下面的字符串时 RANDOM 随机数变量经过 md5sum 处理后,再截取一部分连续字符串的结果,请破解这些字符串在使用 md5sum处理前所对应的数字
#21029299 00205d1c a3da1677 1f6d12dd 890684b

array=(
  21029299
  00205d1c
  a3da1677
  1f6d12dd
  890684b
)
path=/tmp/md5.txt
Num=0
funGetMd5 () {

    [ -f "$path" ] || touch $path
    rowNum=$(wc -l < $path)
    if [ $rowNum -ne 32768 ];then
    > $Path
    for ((Num=0;Num<=32767;Num++))
    do
       stat=$(echo $Num|md5sum|cut -c 1-8)
       echo "$stat $Num" >> $path
    done
else
return 0
fi
}
funFindMd5() {
   word=$(echo "${array[@]}"| sed -r 's# |\n#|#g') 
               ? ? ? ? ? ? ?? #取出所有数组元素并用|分隔开 #此处如果不用-r 的话,“|”就得转义
   grep -E "$word" $path      #同时过滤包含所有不同字符串的内容
}
funMain() {
   funGetMd5
   funFindMd5
}
funMain