解説
安全なパスワードは「長く」「複数の文字種を含む」ものです。小文字・大文字・数字・記号の4種類を必ず混ぜると、総当たり攻撃に強くなります。
このプログラムは各文字種から最低1文字を確保し、残りを全文字種から選び、最後にシャッフルして規則性をなくします。random.seed(0) を入れているので毎回同じ結果になり、動作を確認しやすくなっています(実運用ではseedを固定しません)。
文字の長さと種類が安全性をどう左右するか考えてみましょう。
書き方
import random, string で乱数と文字種の定数を使う。 ・string.ascii_lowercase / ascii_uppercase / digits: 小文字・大文字・数字の文字集合。 ・random.seed(0): 乱数の種を固定し毎回同じ結果に。 ・random.choice(集合): 1文字をランダムに選ぶ。random.shuffle(リスト): 並びをかき混ぜる。
書いて動かす
この回の課題
小文字・大文字・数字・記号を必ず含む12文字のパスワードを生成し、シャッフルして規則性をなくしてみよう。
コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。
もっと本格的に使うなら
Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。