使用随机字符生成安全密码

时间:2016-09-07 17:55:36

标签: ruby security password-generator

我正在尝试使用ruby生成包含特殊字符的随机密码。我想知道是否有生成此类密码的标准。我考虑过使用加权概率分布并指定权重,以便从中挑选特殊字符的可能性更高,但我不确定这是否是一个被广泛接受的标准。

3 个答案:

答案 0 :(得分:7)

您可以使用SecureRandom(docs):

require 'securerandom'

password = SecureRandom.base64(15)
# => "vkVuWvPUWSMcZf9nn/dO"

答案 1 :(得分:7)

Ruby只带有这样一个模块SecureRandom。您可以生成随机字符串:

require "securerandom"

SecureRandom.hex 1 # => "e1"
SecureRandom.hex 2 # => "dcdd"
SecureRandom.hex 3 # => "93edc6"
SecureRandom.hex 5 # => "01bf5657ce"
SecureRandom.hex 8 # => "3cc72f70146ea286"

SecureRandom.base64 2  # => "d5M="
SecureRandom.base64 3  # => "EJ1K"
SecureRandom.base64 5  # => "pEeGO68="
SecureRandom.base64 8  # => "muRa+tO0RqU="
SecureRandom.base64 13 # => "1f8y7xsvaCEw0hwkjg=="

现在有一个加密安全版本的上述名为SysRandom,有些人are recommending

使用gem simple-password-gen您还可以生成random and pronounceable passwords

require "simple-password-gen"

Password.random 8 # => "#TFJ)Vtz3"
Password.pronounceable 13 # => "vingastusystaqu"

最后,为了好玩(我推荐SysRandom),我写了一个小宝石,一会儿回到generate random strings based on template strings。虽然它不包括特殊字符,但它将是一个微不足道的补充。如果您感兴趣,请随时提交问题。

答案 2 :(得分:-1)

最简单的方法是使用string_pattern gem https://github.com/MarioRuiz/string_pattern

这将生成1000个唯一的字符串,包括6至20个字符(包括字母),并强制包含特殊字符和数字

require 'string_pattern'
1000.times {
    puts :"6-20:L/$N/&".gen 
}