Pythonでパスワードの有効性をチェックする方法|正規表現を使った判定プログラム
パスワードの妥当性チェックは、アプリケーション開発における重要なセキュリティ対策の一つです。本記事では、Pythonのreモジュール(正規表現)を使用して、入力されたパスワードが有効かどうかを判定するプログラムを紹介します。re.search()メソッドを活用することで、アルファベット・数字・特殊文字の検証をシンプルに実装できます。
パスワードの検証ルール(アルゴリズム)
有効なパスワードとみなすためには、以下の条件をすべて満たす必要があります。
Step 1: 英数字で構成された文字列をパスワードとして入力として受け取る Step 2: 文字数が最低8文字以上であることを確認する Step 3: 小文字のアルファベット(a〜z)が含まれていること Step 4: 大文字のアルファベット(A〜Z)が少なくとも1つ含まれていること Step 5: 数字(0〜9)が少なくとも1つ含まれていること Step 6: 記号(_ または @ または $)が少なくとも1つ含まれていること
サンプルコード
以下は、上記の条件をもとにパスワードの有効性を判定するPythonプログラムです。
# パスワードが有効かどうかをチェックするPythonプログラム
import re
passw = input("Enter Password ::>")
fl = 0
while True:
if (len(passw) < 8):
fl = -1
break
elif not re.search("[a-z]", passw):
fl = -1
break
elif not re.search("[A-Z]", passw):
fl = -1
break
elif not re.search("[0-9]", passw):
fl = -1
break
elif not re.search("[_@$]", passw):
fl = -1
break
elif re.search("\s", passw):
fl = -1
break
else:
fl = 0
print("This Is Valid Password")
break
if fl == -1:
print("Not a Valid Password")
実行結果
Enter Password ::> vbnA@hj9 This Is Valid Password
プログラムの解説
このプログラムでは、whileループ内で条件を順番にチェックし、いずれかの条件を満たさなかった時点でフラグ変数flを-1に設定してループを抜けます。
len(passw) < 8:パスワードが8文字未満の場合は無効と判定します。re.search("[a-z]", passw):小文字が1つも含まれていない場合に無効とします。re.search("[A-Z]", passw):大文字が含まれているかを確認します。re.search("[0-9]", passw):数字が含まれているかを確認します。re.search("[_@$]", passw):指定の特殊文字が含まれているかを確認します。re.search("\s", passw):空白文字が含まれている場合は無効とします。
すべての条件を通過した場合のみ「This Is Valid Password(有効なパスワードです)」と表示されます。このように正規表現を組み合わせることで、複雑なバリデーション処理も簡潔に記述できるのがPythonの特徴です。
-
Pythonでアームストロング数を判定するプログラムの書き方
この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す
-
【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方
この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数