Python でパスワードを生成する

Namita Chaudhary 2023年6月21日
  1. Python でパスワードを生成する
  2. Python でランダム モジュールを使用してパスワードを生成する
  3. Python でシークレット モジュールを使用してパスワードを生成する
  4. まとめ
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つのパスワードがあり、これらは一意で解読が困難です。

ただし、コード例では randomstring モジュールをインポートしています。 その後、長さをパラメーターとして取り、その特定の長さのパスワードを出力する関数 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 には randomsecrets という 2つのモジュールがあり、困難で解読しにくいパスワードを生成するのに役立ちます。 ただし、どちらのモジュールも string モジュールの助けを借りて、選択する文字の組み合わせを取り上げます。

ただし、secrets モジュールは Python バージョン 3.6 から実装されていますが、パスワードを生成するためのより安全で安全な方法と見なされています。

関連記事 - Python String