Python3.6でランダムなパスワードを生成する
Python3.6で実装されたsecretモジュールを使うと、暗号学的に強い乱数を簡単に得ることができます。 これを使ってランダムなパスワードを生成することができます。
import secrets import string # パスワードの文字数 num = 16 # パスワードに使用する文字の候補 # 下記の場合、poolにはアルファベット小文字大文字 + 数字 + 記号が格納される pool = string.ascii_letters + string.digits + string.punctuation # 候補からランダムに組み合わせてパスワードを生成する(復元抽出) password = "".join([secrets.choice(pool) for i in range(num)]) # 生成したパスワードを出力 print(password) # 出力例: # Mf[WalgJ?`d7gF/' # bT,q*~VsDqEk9d>G # など
string.punctuation
は文字列!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~
を表しています。
パスワードに使えない文字が含まれている場合は、適宜別の文字列に置き換えるとよいでしょう。