8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonで強力なパスワードを作る

Posted at

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_charsstringモジュールを用いて表現する

③空の文字列に組み込み関数の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.punctuationprint関数で実行すると、

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

このように実行されるので、手入力で記号を入力する必要がない。つまり、アルファベットや数字ではない記号を扱うのに使われる。

▼プログラムの完成形はコチラ

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で強力なパスワードを生成するための方法を解説した。
今回の記事をきっかけに、複雑で強力なパスワードを生成するプログラムの実装について理解を深めていただければ幸いである。

【参考サイト】

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?