メモめもメモ

環境構築やプログラミングに関するメモ

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は文字列!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~を表しています。 パスワードに使えない文字が含まれている場合は、適宜別の文字列に置き換えるとよいでしょう。