【python】パスワードのバリデーション的なやつ

今回は、パスワードのバリデーションについて見てみます。
結構使用する機会は多いのかな。

結構単純に
アルファベットの大文字小文字が入力されていること
数字が入っていること
の2点で対応。
本当は記号とかも入れた方がいいのかもしれないけど。
でもパスワードに記号入れるのってあんまりないかもな・・?
あと10文字以上は入力してもらうってな感じ。

pythonの正規表現

前も書きましたが、正規表現は苦手です。
覚えるもんじゃないって前の上司は言ってたっけな・・・w
覚えておけば便利なんでしょうけど、検索すれば出てくるしね。

こちらを参考にさせていただきました。
Pythonでの正規表現の使い方

あとドキュメント。
6.2. re — 正規表現操作

やっぱりあって難しいな。
re っていう便利なライブラリ?が判別してくれるみたいです。

関数を作る

いまいち関数ってのがしっくりきてない感じはしますが、まあとりあえず置いといて。
コードはこんな感じでした。
一個の中で完結させたかったんだけど、絶対にもっとうまい方法があるはず・・・。


import re
# 小文字チェック
def checkalpha(password):
search = re.search("[a-z]+", password)
return True if search else False
# 大文字チェック
def checkAlpha(password):
Alphaserch = re.search("[A-Z]+", password)
return True if Alphaserch else False
# 数字チェック
def checknum(password):
numsearch = re.search("[0-9]+", password)
return True if numsearch else False
# 全てのチェック
def checking(data):
def allCheck():
ansalpha = checkalpha(data)
ansAlpha = checkAlpha(data)
ansnum = checknum(data)
return True if ansalpha == True and ansAlpha == True and ansnum == True else False

return True if len(data) >= 10 and allCheck() else False

ifが多く、かなりごちゃごちゃ感・・・。

数字は良いとして、これ全部まとめる方法ってないのかな。
一個一個関数書くのはいいんだけど、速度的にはどうなんだろうとか色々考えちゃいますね。

参考:
[修正] Python 文字列の英数字判定でハマった
Pythonを使ってパスワードの使用可能文字チェックを作成する

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です