Python
 Computer >> コンピューター >  >> プログラミング >> Python

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の特徴です。

  1. Pythonでアームストロング数を判定するプログラムの書き方

    この記事では、与えられた整数が「アームストロング数(Armstrong number)」であるかどうかを判定するための考え方と、Pythonによる具体的な実装方法を解説します。 問題の定義 整数 n が与えられたとき、その整数がアームストロング数であるかどうかを判定することを目標とします。 アームストロング数とは? n 桁の正の整数 abcd… が次の条件を満たすとき、この数は「n 次(オーダー n)のアームストロング数」と呼ばれます。 abcd... = a^n + b^n + c^n + d^n + … つまり、各桁の数字を「桁数乗」した値の総和が、元の数と一致するかを確認す

  2. 【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方

    この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数