Pythonで強力なパスワードを作る方法
スポンサードリンク
おはようございます。Shotaです。
今回の記事はPythonで強力なパスワードを生成する方法について解説します。
本記事を読んでいるみなさんは、以下のような悩みを抱えていませんか?
😖「パスワードを作るのが面倒」
😖「強力なパスワードをうまく作れない」
本記事では、プログラミング言語「Python」を使って、強力なパスワードを生成するプログラムを書いていきます。
もちろん、自力でランダムに文字を組み合わせてパスワードを生み出すこともできますが、プログラミングに任せたほうが遥かに楽です。本記事で紹介するプログラムを書けば、誰でも簡単に複雑なパスワードを作れます!
今回の記事は、管理人がQiitaに投稿したこちらの記事の改良版になっています。よければこちらの記事も参照してください。
▼おすすめの記事
それでは早速、本題に入りましょう。
半角英数字だけのパスワードを生成
Pythonでは、次の10行近くのコードだけで複雑なパスワードを簡単に作れます。
import secrets import string def makePassword(length): pass_chars = string.ascii_letters + string.digits password = ''.join(secrets.choice(pass_chars) for x in range(length)) return password print(makePassword(10))
上記のプログラムを実行すると、以下のように複雑な文字列が表示されます。たった10行で強力なパスワードを作れるのが本当にすごいですね。
JSZ8kPNcSq
プログラムの仕組みを解説
ではどのようにして複雑な文字列を生み出しているのでしょうか?やり方を簡単に示します。
①パスワードの長さを表す
length
を引数としてパスワードを作る関数makePassword
を定義する
②パスワードを生成するための文字列pass_chars
をstring
モジュールで表現する
③空の文字列に組み込み関数join
を使って、第一引数として渡した整数の回数だけpass_chars
の中の文字列を取り出して変数password
を定義する
④戻り値としてpassword
を返す
モジュール解説
プログラムの中にあるstring
モジュールとsecrets
モジュールについてそれぞれ解説します。ちなみに本記事で紹介するモジュールはよく使用されるので覚えておいてください。
string
モジュール
文字列を操作するためのモジュールです。
モジュールの中のプロパティascii_letters
は、アルファベットの大文字小文字すべての文字列を取り扱います。digits
は0から9までの半角数字を扱います。
secrets
モジュール
パスワードやアカウント認証、セキュリティトークンなどの機密情報を扱うのに適した非常に強いランダムな文字列を生成できるモジュールです。
このモジュールを使ってパスワードに適した文字列を表示できます。
半角英数字+記号のパスワードを生成
前述で取り上げたPythonプログラムの中にある式
pass_chars = string.ascii_letters + string.digits
この式を、
pass_chars = string.ascii_letters + string.digits + string.punctuation
このように変更するだけで複雑なパスワードを作れます。
string.punctuation
をprint
関数で実行すると
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
このように実行されます。アルファベットや数字ではない記号を扱うのによく使われます。
プログラムの完成形はこちらになります。
import secrets import string def makePassword(length): pass_chars = string.ascii_letters + string.digits + string.punctuation password = ''.join(secrets.choice(pass_chars) for x in range(length)) return password print(makePassword(10))
これを実行すると以下のように表示され、前のプログラムよりも複雑なパスワードを生み出せます。
mpz2omy~yN
おわりに
今回の記事では、Pythonで強力なパスワードを生み出すための方法を解説しました。
今回の記事を参考に、複雑で強力なパスワードを生成するプログラムについて理解を深めていただければ幸いです。
今回の記事はこれで終了です。
【参考サイト】