Pythonで強力なパスワードを作る方法を簡単に解説した。
パスワードの文字数を入力すれば複雑な文字列を生成できる関数を作って実装する。
自力でランダムに文字を組み合わせてパスワードを生成することもできるが、機会で無作為に作成したほうがはるかに効率的だろう。
半角英数字だけのパスワードを生成
Pythonなら次の10行近くのコードだけで複雑なパスワードを簡単に生成できる。
import secrets
import string
def get_random_password_string(length):
pass_chars = string.ascii_letters + string.digits
password = ''.join(secrets.choice(pass_chars) for x in range(length))
return password
print(get_random_password_string(10))
print(get_random_password_string(13))
print(get_random_password_string(8))
上記のコードを実行すると、以下のように複雑な文字列が表示される。たったの10行で強力なパスワードを作れるのが凄い。
z8tzplZQ5e
EF2BfRm9A0cwF
QbfhSiln
やり方は以下に示す。
①パスワードの長さを第一引数としてパスワードを生成する関数get_random_password_string
を定義する
▼
②パスワードを生成するための文字列pass_chars
をstring
モジュールを用いて表現する
▼
③空の文字列に組み込み関数のjoin
を用いて、第一引数として渡した整数の回数だけpass_chars
の中の文字列を取り出してpassword
を作る。
▼
④戻り値としてpassword
を返す。
プログラムの中にあるstring
モジュールとsecret
モジュールについて解説する。
string
モジュールとは、文字列を操作するためのモジュールである。
string.ascii_letters
は、アルファベットの大文字小文字全ての文字列を扱う。string.digits
は、0から9までの半角数字を扱う。
secret
モジュールは、パスワードやアカウント認証、セキュリティトークンなどの機密情報を扱うのに適した非常に強いランダムな文字列を生成できるモジュールである。このモジュールを使ってパスワードに適した文字列を表示できる。
これでPythonを使って簡単に複雑な文字列のパスワードを簡単に生成できるようになる。
半角英数字+記号のパスワード生成
前述で取り上げた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 get_random_password_string(length):
pass_chars = string.ascii_letters + string.digits + string.punctuation
password = ''.join(secrets.choice(pass_chars) for x in range(length))
return password
print(get_random_password_string(10))
print(get_random_password_string(13))
print(get_random_password_string(8))
これを実行すると、以下のように表示され、前のプログラムよりも複雑なパスワードを生成できる。
$YpE{x/VKe
Bm]hn`#1Skr/[
ko3I;q!z
おわりに
今回の記事では、Pythonで強力なパスワードを生成するための方法を解説した。
今回の記事をきっかけに、複雑で強力なパスワードを生成するプログラムの実装について理解を深めていただければ幸いである。
【参考サイト】