パスワードを自動で考えてくれないかな。。。
・Pythonを基本的な構文は学んだけれど、次に何をすればいいかわからない方
・パスワードの自動生成について興味がある
・自分でパスワードを考えるのが面倒だ
目次
初学者におすすめ!Pythonで作ってみよう
「Pythonでできることを調べてみても、AIやアプリ開発など難しそうなのばかりでハードルが高そう・・・」
「そもそも何ができるんだろう・・・」
プログラミング学習でおすすめされたプロラミング言語「Python」の基礎構文をとりあえず勉強してみたけど、次に何をすればいいかわからないという方も多いのはないでしょうか。
そこで、何をしたらいいか困っている方にオススメは
- ゴミ回収の日を教えてくれる
- 明日の天気を教えてくれる
- お気に入りのHPが更新されたか教えてくれる
- ルンバがアプリで設定したタイマーで掃除を初めて、完了したか教えてくれる
など、自分があったら便利だなと思うものを作ることで、Pythonへの理解を深めていくことをおすすめします!
パスワード自動生成プログラムを作ってみよう
今回は、Pythonを使ってパスワード自動生成プログラムを作成する方法を解説します。
前提条件
以下の要件を満たすパスワードを生成することとします。
- 長さは8文字以上
- 小文字、大文字、数字、記号がそれぞれ1つ以上含まれている
今回使用するモジュールはこちら
random
モジュール:乱数生成に関する機能を提供する組み込みモジュールの一つです。ランダムな数値やシーケンス、ランダムな選択、シャッフル、確率分布等を生成するための関数が含まれています。
random
モジュールを使用して必要な文字列をランダムに選択していきます。
プログラムのざっくり手順
lowercase_letters = 'abcdefghijklmnopqrstuvwxyz'
uppercase_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits = '0123456789'
symbols = '!@#$%^&*()_-+={}[]|;:,.<>?/~`'
それぞれが1つ以上含むため、それぞれ1つをまずは選択します。
必要な文字数になるようにランダムに文字を選択します。
最後はパスワードをprint
で出力し完了です。
以上が、パスワード自動生成プログラムの前提条件と使用するモジュール、プログラムのざっくりとした流れになります。ここまでの情報を参考にプログラムをご自身でも考え・作ってみることをおすすめします!
パスワード自動生成プログラムの解説
ここから今回のパスワード自動生成プログラムの解説をしていきます。
import random
# パスワードの長さ
password_length = 12
# パスワードに必要な文字の種類
lowercase_letters = 'abcdefghijklmnopqrstuvwxyz'
uppercase_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
digits = '0123456789'
symbols = '!@#$%^&*()_-+={}[]|;:,.<>?/~`'
# パスワードを生成するために使用する文字の種類を結合
all_characters = lowercase_letters + uppercase_letters + digits + symbols
# 先頭文字をランダムに選択
password = random.choice(lowercase_letters) + \
random.choice(uppercase_letters) + \
random.choice(digits) + \
random.choice(symbols)
# 残りの文字をランダムに選択してパスワードを生成
for i in range(password_length - 4):
password += random.choice(all_characters)
# パスワードをシャッフルして表示
password_list = list(password)
random.shuffle(password_list)
password = ''.join(password_list)
print(password)
このコードでは、lowercase_letters
、uppercase_letters
、digits
、symbols
の4つの文字列を定義して、これらを結合してall_characters
という変数に代入しています。
次に、先頭文字として1つずつ各文字種からランダムに選択してパスワードを作成します。その後、ループを使用して、残りの文字をランダムに選択してパスワードに追加しています。
最後に、パスワードをシャッフルして表示しています。
実際にプログラムを何度か実行してみると下記のように出力することができます。
6t|(#3mW36XH
r=sA<d_.8aj}
Hq9=~Ay(MJ$s
p^ro&95T`5Yn
以上、Pythonを使ったパスワード自動生成のプログラムの解説でした。文字列を追加したり、文字の種類を変更したい場合は適切なフィルタリングが必要になりますので気をつけて下さいね。
また、このプログラムで生成されたパスワードを実際に使用する場合は、十分に安全かどうかを確認する必要があります。パスワードを生成するために使用された文字種が限られている場合や、予測しやすいパターンを持つ場合は、推測されやすくセキュリティリスクとなる可能性がありますの十分にご注意ください。
セキュリティーに気をつけよう!!
おすすめの記事はこちら