本記事ではPythonでパスワードを生成する処理について紹介します。
Pythonは「random」ライブラリを活用することでパスワード生成が可能です。
本記事の内容は以下の通り。
・Pythonでrandomライブラリを使用してパスワード生成する方法
・Python+randomパスワード生成の実装例
非常に簡単コードで実現できるので本記事を参考にして作成してみてください。
目次
Pythonでrandomライブラリを使用してパスワード生成する方法
パスワードを生成するにはrandom.sample()によって必要な桁数分文字をを取得します。
random.sample()は複数の桁を取得することが可能ですが、サンプリングなので同じ文字は1度しか使えません。
よって桁数分ループして1文字ずつ取得します。
記述例は以下の通り。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | import random # パスワードの桁数 digit = 8 # パスワード password = '' # パスワードに使う文字列 words = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' # パスワードを生成ループ for i in range(0, digit): # 配列で返ってくるので0番目の値を取得 password = password + random.sample(words, 1)[0] # 生成したパスワードを表示 print(password) |
◆実行結果
LZ10CcZS
# ランダムなので当然毎回値は変わります。
qBQX7YR8
Python+randomパスワード生成の実装例
パラメータを入れるだけでパスワードを作れるように関数化します。
関数仕様
引数1:パスワードの桁数(デフォルト8)
引数2:文字列の種類(デフォルト:大文字・小文字・数字)
リターン値:パスワード
引数1に指定した桁数分の文字列をリターン。
さらに引数2によって「小文字と数字」、「大文字と小文字」、「大文字だけ」のように文字列を細かく指定できるようにします。
実装例は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | import random def make_password(digit=8, word_type=None): words = '' password = '' uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' lowercase = 'abcdefghijklmnopqrstuvwxyz' number = '0123456789' # 引数がない場合は全て指定 if word_type is None: word_type = ['uppercase', 'lowercase', 'number'] # 使用する文字の判定 if 'uppercase' in word_type: words = words + uppercase if 'lowercase' in word_type: words = words + lowercase if 'number' in word_type: words = words + number # パスワードを生成ループ for i in range(0, digit): # 配列で返ってくるので0番目の値を取得 password = password + random.sample(words, 1)[0] return password |
いろいろなパターンを試してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 数字・大文字・小文字 password = make_password(10, ['uppercase', 'lowercase', 'number']) print(password) # 数字・大文字 password = make_password(8, ['uppercase', 'number']) print(password) # 数字・小文字 password = make_password(8, ['lowercase', 'number']) print(password) # 小文字のみ password = make_password(16, ['lowercase']) print(password) |
◆実行結果
1 2 3 4 | OddKzAFVs2 5XTN7C1M p0qzojau joegvezojfyupmqa |
上記のようにいろいろなパターンのパスワードが生成可能です。
後は記号なども追加してみると面白そうですね。
終わりに
Pyhtonはrandomライブラリを使えば簡単にパスワード生成処理が作成できます。
自分の作ったシステムでパスワード生成処理を作成したい場合は今回紹介した方法を参考にして作成してみてください。
関連記事>>【Python】random.shuffle()の活用例
関連記事>>Slackbotでパスワードを生成する〜PythonによるBot開発〜
おすすめパスワード生成サイト
【LUFTTOOLS】パスワード生成(パスワード作成)ツール
簡単な操作で様々なパスワードを生成できるサイトです。40文字まで作成でき、記号を含むこともできるのでかなり強力なパスワードを生成することができます。
数字のみ・英字のみなど柔軟なパスワードの作成も可能です。
私も強力なパスワードを作成したい場合にはよく利用しています。
【LUFTTOOLS】パスワード生成(パスワード作成)ツール
【ラッコツールズ】パスワード生成
最大50文字までのパスワードを生成可能です。
含める記号の種類も選べるのでかなり柔軟にパスワードを作ることができます。
ラッコツールズは他にも「文字数カウント」や「JSONエンコード・デコード」など有用なツールを多数あるのでおすすめのサイトです。