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