Linux下生成随机数和随机字符串
2017-08-21 10:29
309 查看
1、生成长度为32的随机字符串
该方式产生的随机数效果比较好,但是,当不能产生随机数时,它会阻塞在那里,也就是为阻塞程序的执行
2、用/dev/urandom文件产生
该方式产生的随机数随机效果一般是,但是产生速度快,不会阻塞程序的运行
3、使用openssl方式
4、生成随机数:
注:得到的这个随机数是介于 0~32767 之间的一个整数。
5、生成随机字符串
注:生成由a-Z和0-9组成的字符串。
注:
strings:
在对象文件或二进制文件中查找可打印的字符串。
语法:
语法
参数:
退出状态
该命令返回以下退出值:
0 表示命令成功运行。
0 表示出错。
3、从指定字符集合中生成随机字符串:
4、通过时间获得随机数(date)
5、通过系统内部唯一数据生成随机数(/dev/random,urandom)
读一行,怎么是乱码呢?其实它是通过二进制数据保存实时数据的,那么我们怎么样把它变成整型数据呢?
由于urandom的数据是非常多,不能直接通过cat读取,这里取前200行,其实整个数据都是变化的,取多少也一样是唯一的。
cksum 将读取文件内容,生成唯一的表示整型数据,只有文件内容不变,生成结果就不会变化,与php crc函数
6、读取linux 的uuid码
ad12
head -c 32 /dev/random | base64
该方式产生的随机数效果比较好,但是,当不能产生随机数时,它会阻塞在那里,也就是为阻塞程序的执行
2、用/dev/urandom文件产生
head -c 32 /dev/random | base64
该方式产生的随机数随机效果一般是,但是产生速度快,不会阻塞程序的运行
3、使用openssl方式
openssl rand -hex 10
4、生成随机数:
[root@73 ~]# echo $RANDOM 32641 [root@73 ~]# echo $RANDOM 9753 [root@73 ~]# echo $RANDOM 710
注:得到的这个随机数是介于 0~32767 之间的一个整数。
5、生成随机字符串
a、[root@73 ~]# head -n 5 /dev/urandom |sed 's/[^a-Z0-9]//g'|strings -n 4 fEVN Lfkm0 PMSZfO tEIw aKbc MWLTk1
注:生成由a-Z和0-9组成的字符串。
b、[root@73 ~]# openssl passwd -stdin < <(echo) 5LYYPmuNIFS9c c、[root@73 ~]# head -n 5 /dev/urandom |strings -n 5 ]bE&O p\#P6C _\I[K C3Hn2,= $JfV5q {8tD) zG}Uw
注:
strings:
在对象文件或二进制文件中查找可打印的字符串。
语法:
语法
strings [ -a ] [ - ] [ -o ] [ -t Format ] [ -n Number ] [ -Number ] [ File ... ]
参数:
-a 或 - 搜索整个文件,而不仅仅是数据段,以寻找可打印的字符串。如果省略这个标志,则 strings 命令只在对象文件的初始化数据空间内寻找。 -n Number 指定最小的字符串长度(除了缺省的 4 个字符以外)。字符串长度的最大值是 4096。这个标志与 -Number 标志相同。 -o 列出文件中每个跟随在其八进制偏移量之后的字符串。这个标志与 -t o 标志相同。 -t Format 列出从文件最开始起,每个跟随在其偏移量之后的字符串。该格式取决于用作 Format 变量的字符。 d 以十进制写下偏移量。 o 以八进制写下偏移量。 x 以十六进制写下偏移量。 注:当 -o 和 -t Format 标志在一个命令行上多次定义,则最后指定的标志控制 strings 命令的行为。 -Number 指定最小的字符串长度(除了缺省的 4 个字符以外)。字符串长度的最大值是 4096。这个标志与 -n Number 标志相同。 File 要搜索的二进制文件或对象文件。
退出状态
该命令返回以下退出值:
0 表示命令成功运行。
0 表示出错。
3、从指定字符集合中生成随机字符串:
#!/bin/bash MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+=" LENGTH="9" while [ "${n:=1}" -le "$LENGTH" ] do PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}" let n+=1 done echo "$PASS" exit 0
4、通过时间获得随机数(date)
[chengmo@centos5 shell]$date +%s%N 1287764807051101270 #这个可以说比较完美了,加入了时间戳,又加上了纳秒
5、通过系统内部唯一数据生成随机数(/dev/random,urandom)
[chengmo@centos5 shell]$head -1/dev/urandom ãņù…•KTþçanVÕã¹Û&¡õ¾“ô2íùU“ žF¦_ ÿ”†mEðûUráÏ=J¯TŸA•ÌAÚRtÓ
读一行,怎么是乱码呢?其实它是通过二进制数据保存实时数据的,那么我们怎么样把它变成整型数据呢?
[chengmo@centos5 ~/shell]$head -200/dev/urandom | cksum 1615228479 50333
由于urandom的数据是非常多,不能直接通过cat读取,这里取前200行,其实整个数据都是变化的,取多少也一样是唯一的。
cksum 将读取文件内容,生成唯一的表示整型数据,只有文件内容不变,生成结果就不会变化,与php crc函数
6、读取linux 的uuid码
[chengmo@centos5 ~/shell]$cat /proc/sys/kernel/random/uuid| cksum |cut -f1 -d" " 2141807556
ad12
相关文章推荐
- 用MySQL里的Rand()生成 不连续重复 的随机数年龄以及随机姓名字符串
- Linux生成随机字符串
- Linux小技巧:生成随机字符串
- shell 生成指定范围随机数与随机字符串 .
- shell 生成指定范围随机数与随机字符串
- 使用boost库生成 随机数 随机字符串
- 随机数和随机字符串的生成
- shell 生成指定范围随机数与随机字符串
- java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串
- 巧用UUID生成随机数或随机字符串
- ruby 生成随机数 和 随机字符串
- java生成随机字符串和随机数
- Linux生成随机字符串
- Excel 生成随机数,随机日期,随机字符串
- Oracle 生成随机数,随机字符串
- java随机数生成1到10 java怎么随机生成一个字符串?
- 随机数和随机字符串的生成
- 详解Linux如何生成随机数字和字符串
- 利用随机数随机生成指定位数的字符串
- ruby 生成随机数 和 随机字符串