日々の記録。

プログラミングのメモや感じた事などを記録。

ruby で 英数字記号を用いたランダムパスワードの生成 2

以前作成したパスワード生成スクリプトに、記号の有無、種類を引数で指定できるようにしたので掲載

# coding: utf-8
#英数記号を含むパスワードを生成する.
#記号を利用しない場合は、symbols_strにnilか""を設定する。
def password_gen(length=8, symbols_str="@ * & , $")
  codes = []
  codes <<= [*0..9]
  codes <<= [*'a'..'z']
  codes <<= [*'A'..'Z']
  codes <<= symbols_str.split(/\s+/) if symbols_str and !symbols_str.empty?
  codes.shuffle!
                
  password = []
  length.times do |i| 
    password << codes[i % codes.size].sample(1)
  end 
  password.shuffle.join
end