Re:ゼロから始める文系プログラマ

未経験がプログラミングを通して人生を変える

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


スポンサードリンク
 

f:id:ShotaNukumizu_1000:20211009101720p:plain

おはようございます。Shotaです。

今回の記事はPythonで強力なパスワードを生成する方法について解説します。

本記事を読んでいるみなさんは、以下のような悩みを抱えていませんか?


😖「パスワードを作るのが面倒」

😖「強力なパスワードをうまく作れない」


本記事では、プログラミング言語Python」を使って、強力なパスワードを生成するプログラムを書いていきます。

もちろん、自力でランダムに文字を組み合わせてパスワードを生み出すこともできますが、プログラミングに任せたほうが遥かに楽です。本記事で紹介するプログラムを書けば、誰でも簡単に複雑なパスワードを作れます!

今回の記事は、管理人がQiitaに投稿したこちらの記事の改良版になっています。よければこちらの記事も参照してください。

▼おすすめの記事

qiita.com

それでは早速、本題に入りましょう。



半角英数字だけのパスワードを生成

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_charsstringモジュールで表現する

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

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

このように実行されます。アルファベットや数字ではない記号を扱うのによく使われます。

プログラムの完成形はこちらになります。

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で強力なパスワードを生み出すための方法を解説しました。

今回の記事を参考に、複雑で強力なパスワードを生成するプログラムについて理解を深めていただければ幸いです。

今回の記事はこれで終了です。

【参考サイト】

docs.python.org