免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: zhangr
打印 上一主题 下一主题

[请教]如何随机的生成一个字符串?[请教]  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2004-02-17 14:36 |只看该作者

[请教]如何随机的生成一个字符串?[请教]

本帖最后由 rdcwayx 于 2014-09-04 14:54 编辑
  1. #!/bin/bash
  2. # May need to be invoked with #!/bin/bash2 on older machines.
  3. #
  4. # Random password generator for bash 2.x by Antek Sawicki <tenox@tenox.tc>,
  5. # who generously gave permission to the document author to use it here.
  6. #
  7. # ==> Comments added by document author ==>
  8. MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  9. LENGTH="8"
  10. # ==> May change 'LENGTH' for longer password, of course.
  11. while [ "${n:=1}" −le "$LENGTH" ]
  12. # ==> Recall that := is "default substitution" operator.
  13. # ==> So, if 'n' has not been initialized, set it to 1.
  14. do
  15. PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
  16. # ==> Very clever, but tricky.
  17. # ==> Starting from the innermost nesting...
  18. # ==> ${#MATRIX} returns length of array MATRIX.
  19. # ==> $RANDOM%${#MATRIX} returns random number between 1
  20. # ==> and length of MATRIX − 1.
  21. # ==> ${MATRIX:$(($RANDOM%${#MATRIX})):1}
  22. # ==> returns expansion of MATRIX at random position, by length 1.
  23. # ==> See {var:pos:len} parameter substitution in Section 3.3.1
  24. # ==> and following examples.
  25. # ==> PASS=... simply pastes this result onto previous PASS (concatenation).
  26. # ==> To visualize this more clearly, uncomment the following line
  27. # ==> echo "$PASS"
  28. # ==> to see PASS being built up,
  29. # ==> one character at a time, each iteration of the loop.
  30. let n+=1
  31. # ==> Increment 'n' for next pass.
  32. done
  33. echo "$PASS" # ==> Or, redirect to file, as desired.
  34. exit 0
复制代码

论坛徽章:
0
12 [报告]
发表于 2004-02-17 16:28 |只看该作者

[请教]如何随机的生成一个字符串?[请教]

原帖由 "小鹭"]}" −le "$LENGTH"  发表:

# ==> Recall that := is "default substitution" operator.
# ==> So, if 'n' has not been initialized, set it to 1.
do
PASS="$PASS${MATRIX(($RANDOM%${#MATRIX})):1}"
..........

8错!8错!收下了,谢谢!     

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
13 [报告]
发表于 2004-11-01 02:19 |只看该作者

[请教]如何随机的生成一个字符串?[请教]

可以考虑用md5sum来产生随机序列
用用户名md5后作为用户的随机密码,如:

  1. echo username|md5sum|passwd username --stdin
复制代码

这个用户的密码绝对安全

论坛徽章:
0
14 [报告]
发表于 2008-07-17 16:31 |只看该作者
不知道这个够不够用:

awk 'BEGIN{srand();for(i=0;i<10;i++)printf("%c",rand()*100+30);print}'

论坛徽章:
0
15 [报告]
发表于 2008-07-17 16:58 |只看该作者
又见挖坟/

论坛徽章:
0
16 [报告]
发表于 2008-07-17 18:04 |只看该作者
不知道是不是鬼吹灯看多了,最近挖坟的越来越多了。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
17 [报告]
发表于 2008-07-17 18:13 |只看该作者
原帖由 walkerxk 于 2008-7-17 18:04 发表
不知道是不是鬼吹灯看多了,最近挖坟的越来越多了。

呵呵, 我正看呢,

论坛徽章:
0
18 [报告]
发表于 2008-07-17 19:42 |只看该作者
原帖由 寂寞烈火 于 2008-7-17 18:13 发表

呵呵, 我正看呢,

完了,火哥也要开始挖坟了,难道要把CU最早的帖子挖出来?
http://bbs.chinaunix.net/thread-15834-1-791.html
这个帖子,谁去顶一下?02年的。

论坛徽章:
0
19 [报告]
发表于 2008-07-18 00:10 |只看该作者
可以考虑用mcookie这个命令,或者直接从/dev/urandom读

$ mcookie
2c596ef9b1e039a4789d2eae417692a8

$ dd if=/dev/urandom bs=32 count=1 | uuencode -m -
begin-base64 664 -
Hdfah213RFV6goRTTHN7pSfvJ2Jk/zbvzQU0ZXWyolE=
====
1+0 records in
1+0 records out
32 bytes (32 B) copied, 9.1971e-05 seconds, 348 kB/s


[ 本帖最后由 sanyork 于 2008-7-18 00:16 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2008-07-18 00:30 |只看该作者
/dev/random
/dev/urandom
就是干这个事情的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP