linux 随机,oracle获取随机数
大家好,今天来为大家分享linux 随机的一些知识点,和oracle获取随机数的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!
Linux命令行生成随机密码的方法有哪些
生成一个随机密码
对于下面的任何一种方法,你可以通过简单的修改来生成特定长度的密码,或者只使用其输出结果的前N位。希望你正在使用一些类似于LastPass的密码管理器,这样你就不用自己记住这些随机生成的密码了。
1.这种方法使用SHA算法来加密日期,并输出结果的前32个字符:
Shell
1
date+%s| sha256sum| base64| head-c 32; echo
2.这种方法使用内嵌的/dev/urandom,并过滤掉那些日常不怎么使用的字符。这里也只输出结果的前32个字符:
Shell
1
</dev/urandom tr-dc _A-Z-a-z-0-9| head-c${1:-32};echo;
3.这种方法使用openssl的随机函数。如果你的系统也许没有安装openssl,你可以尝试其它九种方法或自己安装openssl。
Shell
1
openssl rand-base64 32
4.这种方法类似于之前的urandom,但它是反向工作的。Bash的功能是非常强大的!
1
tr-cd'[:alnum:]'</dev/urandom| fold-w30| head-n1
5.这种方法使用string命令,它从一个文件中输出可打印的字符串:
Shell
1
strings/dev/urandom| grep-o'[[:alnum:]]'| head-n 30| tr-d'\n'; echo
6.这是使用urandom的一个更简单的版本:
Shell
1
</dev/urandom tr-dc _A-Z-a-z-0-9| head-c6
7.这种方法使用非常有用的dd命令:
Shell
1
dd if=/dev/urandom bs=1 count=32 2>/dev/null| base64-w 0| rev| cut-b 2-| rev
8.你甚至可以生成一个只用左手便可以输入的密码:
Shell
1
</dev/urandom tr-dc'12345!@#$%qwertQWERTasdfgASDFGzxcvbZXCVB'| head-c8; echo""
9.如果每次都使用上述某种方法,那更好的办法是将它保存为函数。如果这样做了,那么在首次运行命令之后,你便可以在任何时间只使用randpw就可以生成随机密码。或许你可以把它保存到你的~/.bashrc文件里面。
Shell
1
randpw(){</dev/urandom tr-dc _A-Z-a-z-0-9| head-c${1:-16};echo;}
10.最后这种生成随机密码的方法是最简单的。它同样也可以在安装了Cygwin的Windows下面运行。在Mac OS X下或许也可以运行。我敢肯定会有人抱怨这种方法生成的密码没有其它方法来的随机。但实际上如果你使用它生成的全部字符串作为密码,那这个密码就足够随机了。
Shell
1
date| md5sum
是的,这种方法也极其好记。
如何在Linux系统通过命令行生成随机文件
A、当你不需要关心随机文件的内容,只需一个固定大小的文件
1、Solaris、Mac OS X等Unix系统中mkfile指令,可以产生指定大小的文件,而Linux上则没有
例子:
mkfile-n 160g test1
2、Linux可以用dd指令,/dev/zero是一个特别的文件描述符可以通过它返回null值
例子:
dd if=/dev/zero of=test.file count=1024 bs=1024
产生count* bs字节的文件,1M
此方法生成随机文件的好处在于效率高(产生1G文件大概1s),创建的文件大小精确到字节
坏处也有
使用null字符来填充文件内容,文件统计时没有行(wc-l test.file为0)
B、当你不需要关心随机文件的内容,但期望测试文件能有统计的行
将/dev/zero改为/dev/urandom,/dev/urandom是linux下的随机数生成器
关于/dev/urandom跟/dev/random两者的区别就不在此详细讨论,大概就是,前者是不受系统interrupts的限制,即使没有足够的interrupt它也能通过随机数生成器产生足够的输出值;而后者如果用在dd上,它不能被ctrl+c或者kill-9中断,如果ds的值较大时,产生的随机值不足而长期占用CPU。虽然说/dev/random产生的随机数会更随机些,但与dd混用还是建议用/dev/urandom效率更高。
缺点跟/dev/zero比当然是效率会更低些了,生成个100Mb的文件需要10秒左右,而且文件并没有可读的内容,一般的情况基本上是满足了。
漏了说句,dd是linux与unix都支持的指令。
C、当你关心文件的随机内容行数,而不关心内容是否有所重复
这里的思路就是找一个参照文件(比如说2行),将文件重新定向到新的文件,再mv覆盖保存,外加一个for循环。(n为循环次数,产生的文件行为2^(n+1))
例子:假设先建立一个file.txt文件,里面含有Hello和 World两行
for i in{1..n}; do cat file.txt file.txt> file2.txt&& mv file2.txt file.txt; done
由于是阶乘,n=20左右已经是200W行,效率会下降地比较厉害
D、当你关心随机文件的内容,而不想出现重复内容行情况
这种情况下系统的指令应该是不能满足了,或者可以通过操作系统的指令写一大串脚本也可以达到,但不建议这么做,因为可读性和维护性考虑,你应该要引入Ruby或者Python类的脚本语言帮忙了
但还是要借助些系统的东西来帮忙
思路:
/usr/share/dict/words里面有记录一些单词,一共235886行,每行一个单词
可以从里面挑选一些作为文件的内容
加循环达到我们想要的随机文件要求
举例:
ruby-e'a=STDIN.readlines;X.times do; b=[];Y.times do; b<<a[rand(a.size)].chomp end; puts b.join("")'</usr/share/dict/words> file.txt
X为随机文件需要的行数,Y为从words中读取的单词,虽说组合成一句的命令,还是可以读懂的;从标准输入中重复读取Y个单词,写入到b列表中,然后再通过join空格连接内容写入到标准输出文件file.txt中
这样基本很少会有重复的行了,而且生成的效率与其他方法对比还是可以的,10秒生成100Mb文件。欢迎大家讨论。
八种在 Linux 上生成随机密码的方法
在Linux上生成随机密码的方法
本文将指导您使用8种不同的方法在Linux终端中生成随机密码,其中一些使用原生Linux命令,另一些则通过在Linux机器上轻松安装的第三方工具实现。
这些方法旨在生成独特且随机的字母字符串,可作为新用户密码。无论用户基数如何,这些密码都是独一无二的。接下来,让我们一起探索8种在Linux上生成随机密码的方法。
使用mkpasswd实用程序生成密码
在基于RHEL的系统上,mkpasswd随expect软件包一起安装;在基于Debian的系统上,它包含在whois软件包中。要正确使用mkpasswd,请先安装父软件包。运行mkpasswd命令以获得密码。
不同系统上的命令可能有所不同,您可以使用参数控制长度等选项。查阅man手册以深入了解。
使用openssl生成密码
几乎所有Linux发行版都包含openssl。利用其随机功能,我们可以生成可用作密码的随机字母字符串。
使用base64编码随机函数,最后一个数字参数表示所需长度。
使用urandom生成密码
设备文件/dev/urandom是获取随机字符串的另一种方法。通过使用tr功能并裁剪输出,将其作为密码。
使用dd命令生成密码
通过使用/dev/urandom设备配合dd命令,我们可以获取随机字符串。
将结果通过base64编码使其可读。使用数值获取所需长度。简洁输出命令如下:
使用md5sum生成密码
计算MD5校验值是一种生成可用作密码的随机字符串的方法。校验值确实像是随机字符串的组合,可用于密码。确保计算源是一个变量,这样每次运行命令时生成的校验值都会不同。
将date命令的输出通过md5sum得到校验和!您还可以使用cut命令裁剪所需长度。
使用pwgen生成密码
pwgen软件包可以在类似EPEL软件仓库中找到。pwgen专注于生成可发音的密码,但它们不在英语词典中,也不是纯英文的。在标准发行版仓库中可能找不到这个工具。安装此软件包后,运行pwgen命令行。将得到密码列表!
pwgen还有许多自定义选项,这些都可以在man手册中查阅。
使用gpg工具生成密码
GPG是遵循OpenPGP标准的加密及签名工具,大部分gpg工具都预先安装在系统中。如果没有,则可以寻找gpg或gpg2软件包并安装它。
使用以下命令生成密码:
传入生成随机字节序列选项(--gen-random),质量为1(第一个参数),次数12(第二个参数)。选项--armor保证以base64编码输出。
使用xkcdpass生成密码
xkcdpass工具由xkcd网站启发,专门用于生成好记且复杂的密码。这是一个Python软件包,可以在Python官网找到。
安装步骤和测试输出已在相关页面上提及。运行xkcdpass命令,将随机提供几个像下面这样的字典单词:
您可以使用这些单词作为其他命令的输入,例如md5sum,或每个单词的第N个字母来生成密码!您甚至可以将所有单词组合成一个超长的密码,既好记又不易被电脑程序破解。
在Linux上,还有像Diceware、KeePassX、Revelation、PasswordMaker等工具,可以考虑用于生成强随机密码。