Python でパスワードを生成する
データ侵害、サイバー脅威、システムへのサイバー攻撃についてよく耳にします。 したがって、データのセキュリティと機密性は、私たちの生活の非常に重要な部分になっています。 現在、データを保護する方法の 1つは、パスワードで保護することです。
この記事では、Python でのパスワード生成について説明します。
Python でパスワードを生成する
セキュリティについて話すとき、パスワードがよく登場します。 現在、これらのパスワードは非常に多くの重要なデータを保護するために使用されているため、ハッカーが解読するのは難しいはずです.
攻撃者は、多くの場合、さまざまな文字の組み合わせをランダムに試して正しいパスワードを推測することで、そのようなパスワードをクラックしようとします。
私たち人間が手動でパスワードを生成すると、多くの場合、簡単に破ることができます。 多くの人が自分の名前を数字や記号と組み合わせようとしますが、これはハッカーにとって簡単なことではありません。
したがって、これらのパスワードは、簡単に破られないように作成する必要があります。 Python には、解読が困難で簡単に作成できるパスワード生成方法がいくつかあります。
それでは、それらのいくつかについて詳しく説明しましょう。
Python でランダム モジュールを使用してパスワードを生成する
Python の random
モジュールは、リストからランダムな要素を生成します。 さらに、Python の random
モジュールの choice()
メソッドを使用します。
choice()
メソッドは、リストからランダムな要素を選択します。 したがって、random.choice()
メソッドは、このメソッドを使用してパスワードを生成する際の主なキャッチになります。
しかし、今、私たちが話しているこのリストが何であるか疑問に思っているに違いありません. そのため、random.choice()
メソッドが選択するリストには、すべての小文字と大文字、数字、および句読点記号が含まれます。
したがって、生成されるパスワードには、解読が困難なこれらの文字のランダムな順序が含まれます。
ここで、Python の string
モジュールを使用して、小文字、大文字、数字、および句読点記号をすべて取得します。 string
モジュールの ascii.lowercase
メソッドは英語のアルファベットからすべての小文字を取得するために使用され、ascii.uppercase
は英語のアルファベットのすべての大文字を取得するために使用されます。
数字と句読記号を取得するには、Python の string
モジュールの string.digits
メソッドと string.punctuation
メソッドをそれぞれ使用します。
Python で random
および string
モジュールを使用してパスワードを生成するコードを見てみましょう。
import random
import string
def passwordGen(length):
lower = string.ascii_lowercase
upper = string.ascii_uppercase
digits = string.digits
symbols = string.punctuation
comb = lower + upper + digits + symbols
result_str = "".join(random.choice(comb) for i in range(length))
print("Password of length ", length, "is:", result_str)
passwordGen(12)
passwordGen(10)
passwordGen(5)
出力:
Password of length 12 is: ^)n34W6~0Wdx
Password of length 10 is: g&#'G-T\vn
Password of length 5 is: &g/S3
したがって、上記の出力からわかるように、長さが異なる 3つのパスワードがあり、これらは一意で解読が困難です。
ただし、コード例では random
と string
モジュールをインポートしています。 その後、長さをパラメーターとして取り、その特定の長さのパスワードを出力する関数 passwordGen
を作成しました。
関数内では、すべての文字、数字、記号をさまざまな変数に格納しています。 これで、これらすべての文字を 1つの文字列に結合し、変数 comb
に格納しました。
ここで、random.choice(comb)
を使用して、各インデックスの文字列 comb
から指定された長さまでランダムに文字を選択し、結果を出力しました。
Python でシークレット モジュールを使用してパスワードを生成する
Python のもう 1つのモジュールは、セキュリティ目的で強力な暗号乱数を生成するために使用されます。 このモジュールは secrets
モジュールとして知られています。 ただし、このモジュールは Python バージョン 3.6 以降で使用できます。
この secrets
モジュールは、オペレーティング システムの最も安全なランダム性のソースを提供します。 したがって、生成されるパスワードはより安全で効果的です。 次に、Python の secrets
モジュールを使用してパスワードを生成するプログラムについて説明します。
このプログラムは、以前に説明したものと似ていますが、secrets
モジュールを使用すると、システムを保護する上でより安全で効果的です。
import string
import secrets
def passwordGen(len):
combination = string.ascii_letters + string.digits + string.punctuation
password = "".join(secrets.choice(combination) for i in range(len))
print("Password is: ", password)
passwordGen(12)
passwordGen(8)
出力:
Password is: Gz!*j3p4xd$Z
Password is: 5#;CSIa7
したがって、出力でわかるように、string
のメソッドを使用してパスワードを作成するために、すべての文字、数字、句読点を組み合わせた変数 combination
を持つメソッド passwordGen
を作成しました。 Python のモジュール。
その後、secrets.choice(combination)
メソッドを使用し、指定された長さの len
のパスワードを作成して出力するために選択するすべての文字を指定しました。 したがって、secrets
モジュールを使用して Python でパスワード生成を実行します。
まとめ
この記事では、Python でパスワードを生成する方法について説明しました。 この時代ではセキュリティが主要な要件であるため、安全で安全なパスワードの生成は非常に重要です。
この目的のために、Python には random
と secrets
という 2つのモジュールがあり、困難で解読しにくいパスワードを生成するのに役立ちます。 ただし、どちらのモジュールも string
モジュールの助けを借りて、選択する文字の組み合わせを取り上げます。
ただし、secrets
モジュールは Python バージョン 3.6 から実装されていますが、パスワードを生成するためのより安全で安全な方法と見なされています。