Project1

标题: 【不是创意的创意】字符密码生成器v1.5(2012年4月29日更新) [打印本页]

作者: 精灵使者    时间: 2012-2-3 14:56
标题: 【不是创意的创意】字符密码生成器v1.5(2012年4月29日更新)
本帖最后由 精灵使者 于 2012-4-29 16:05 编辑

精灵最近对密码产生了兴趣,于是精灵开始做随机序列生成器——密码符合复杂度要求的那种。
于是这个生成器每次运行可以生成一组密码,配合姓名输入处理就可以做一批更加复杂的解密密码输入器了……
嗯,就酱紫。
1.5整合了两种算法,提高灵活性
1.3-1.4 增添一个计算算法
1.2版更新:增加了复杂度认证。小于六位的密码将直接报告过短。
1.1版更新:完全简化了代码的生成方式
RUBY 代码复制
  1. #===============================================================
  2. #随机密码生成器v1.5
  3. #创意:orzfly,禾西 修改并优化:精灵
  4. #1.1版更新:完全简化了代码的生成方式
  5. #1.2版更新:增加了复杂度认证。小于六位的密码将直接报告过短。
  6. #1.3-1.4 增添一个计算算法
  7. #1.5整合了两种算法,提高灵活性
  8. #===============================================================
  9.  
  10. #必要参数
  11. Specialnum = [*33..47]+[*58..64]+[*91..96]+[*123..126]
  12.  
  13. #-----------------------------------------------------------------
  14. #  length: 密码长度
  15. #  type:计算类型
  16. #-----------------------------------------------------------------
  17.  
  18. def rand_password(length = 6,type = 0)
  19.   #密码过短提示
  20.   return "length is too short!" if length < 6
  21.   #获取必要的方法参数
  22.   if type = 0
  23.     length < 12 ? @pastype = 1 : @pastype = 2
  24.   else
  25.    @pastype = type
  26.   end
  27.   case @pastype
  28.   when 1
  29.   #计算算法,适合短密码
  30.   chrArr = []
  31.   chrArr << (48+rand(10)).chr
  32.   chrArr << (65+rand(26)).chr
  33.   chrArr << (97+rand(26)).chr
  34.   chrArr << Specialnum[rand(Specialnum.size)].chr
  35.   chrArr.delete_at(rand(4))
  36.   (length-3).times{chrArr << (33+rand(93)).chr}
  37.   ret = ""
  38.   for i in 0...length
  39.     ret += chrArr.delete_at(rand(length-i))
  40.   end
  41.   return ret
  42.   when 2
  43.   #校验算法,适合长密码
  44.   loop do
  45.   str_type = 0  
  46.   ret = ''
  47.   ret = Array.new(length).inject(''){|str,x| str+(33+rand(93)).chr}
  48.   str_type += 1 if re.index(/[A-Z]/)
  49.   str_type += 1 if re.index(/[a-z]/)
  50.   str_type += 1 if re.index(/\d/)
  51.   str_type += 1 if re.index(/[^\w]/)
  52.   return ret if str_type > 2
  53.   end
  54.   else
  55.   #意外出错返回
  56.   return "Type Error!"
  57.   end
  58. end



代码使用方法:插入main之前使用,调用方法:

rand_password(你需要的字符长度),默认为6位

顺便备份一些东西……

  1. #===============================================================
  2. #随机顺序生成器v1.1
  3. #创意:orzfly
  4. #===============================================================
  5. def shufflerange(len = 6)
  6. (1..len).to_a.sort_by{rand}
  7. end
复制代码
用法 shufflerange(你需要的字符长度)

复杂度要求:大写,小写,字符,数字四者至少选3个。

作者: wyongcan2008    时间: 2012-2-3 16:04
使用方法是rand_password(你需要的字符长度)吧
作者: 精灵使者    时间: 2012-2-6 13:47
本帖最后由 精灵使者 于 2012-2-6 14:48 编辑

好吧,我移动到讨论区的目的就是,这个字符密码生成器生成的密码有的时候并没有完全符合复杂度要求——
复杂度要求:位数至少6位以上(这个简单)
问题是,必须要包含以下四类密码字的至少三类以上:
1、大写字母,2,小写字母,3,数字,4,特殊符号。
版本已更新到1.2见上楼


‘‘──精灵使者于2012-4-29 13:28补充以下内容

OK,更新到1.5版
’’
作者: end55rpg    时间: 2012-4-30 17:43
好吧,那个随机64,97随机字码是什么?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1