系统时间在linux中的随机字符串

时间:2013-07-15 09:19:32

标签: linux random

我和Bash一起工作。我想按系统时间生成随机字符串。唯一字符串的长度必须在10到30个字符之间。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:11)

有很多方法可以做到这一点,我最喜欢的方法是使用urandom设备:

burhan@sandbox:~$ tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1
CCI4zgDQ0SoBfAp9k0XeuISJo9uJMt
  • tr(翻译)确保只显示字母数字
  • fold将其换行为30个字符宽度
  • head确保我们只获得第一行

使用当前系统时间(因为您有此特定要求):

burhan@sandbox:~$ date +%s | sha256sum | base64 | head -c30; echo
NDc0NGQxZDQ4MWNiNzBjY2EyNGFlOW
  • date +%s =这是我们基于日期的种子
  • 我们通过几个哈希来运行它以获得“随机”字符串
  • 最后我们将其截断为30个字符

其他方式(包括我在上面列出的两种方式)可以在this page和其他方式google获得。

答案 1 :(得分:4)

也许你可以使用uuidgen -t

  

生成基于时间的UUID。此方法根据系统时钟和系统的以太网硬件地址(如果存在)创建UUID。

答案 2 :(得分:0)

我最近整理了一个脚本来处理这个问题,输出是33位md5校验和但你可以用sed将它修剪到10-30之间。

E.g。 gen_uniq_id.bsh | sed 's/\(.\{20\}\)\(.*$\)/\1/'

该脚本非常强大 - 它使用当前时间纳秒,/ dev / urandom,鼠标移动数据,并允许随意更改随机和鼠标数据收集的收集时间。

它还有一个-s选项,允许合并一个额外的字符串参数,因此您可以从任何内容中随机播种。

https://code.google.com/p/gen-uniq-id/