#69

安全なパスワードの自動生成

複数の文字種を組み合わせ、推測されにくいパスワードを生成します。

解説

安全なパスワードは「長く」「複数の文字種を含む」ものです。小文字・大文字・数字・記号の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本まで)。 このブラウザ版の学習センターも、引き続き無料でお使いいただけます。