ホームページ >バックエンド開発 >Python チュートリアル >Secret Lib を使用して安全な Python パスワード ジェネレーターを構築する

Secret Lib を使用して安全な Python パスワード ジェネレーターを構築する

Barbara Streisand
Barbara Streisandオリジナル
2024-10-16 12:10:29217ブラウズ

Build a Secure Python Password Generator Using Secret Lib

パスワード ジェネレーターを構築した後、いくつかの素晴らしいレビューを受け取りましたが、そのうちの 2 つが私にとって際立ったものでした。Guillaume Ste-Marie はランダム性を高めるためにシードを使用することを提唱し、Christian Ledermann もその秘密を主張しました。ランダムは実際にはランダムではないため、ランダムを置き換える必要があります。

シークレット モジュールは、パスワード、アカウント認証、セキュリティ トークン、関連するシークレットなどのデータの管理に適した、暗号的に強力な乱数を生成します。

完全な安全なパスワード生成コード

まず、安全なパスワード ジェネレーターのコード全体を見てみましょう。威圧的に見えても心配する必要はありません。次のセクションで 1 行ずつ詳しく説明します。

    import secrets
    import string

    def generate_password(length=12):
        characters = string.ascii_letters + string.digits + string.punctuation
        password = ''.join(secrets.choice(characters) for _ in range(length))
        return password

    def main():
        print("Welcome to the Secure Password Generator!")

        try:
            length = int(input("Enter the desired password length: "))
            if length <= 0:
                raise ValueError("Password length must be positive")
        except ValueError as e:
            print(f"Invalid input: {e}")
            print("Using default length of 12 characters.")
            length = 12

        password = generate_password(length)
        print(f"\nYour generated password is: {password}")

    if __name__ == "__main__":
        main()

ここで、これを分解して各部分を詳しく調べてみましょう。

必要なモジュールのインポート

    import secrets
    import string

これらの 2 行は、安全なパスワード ジェネレーターに必要なモジュールをインポートします。

  • Secrets モジュールは、パスワードなどの秘密の管理に適した暗号的に強力な乱数を生成する機能を提供します。暗号化目的のランダム モジュールよりも安全です。

  • 文字列モジュールは、さまざまなタイプの文字 (文字、数字、句読点) を含む定数を提供します。これにより、パスワードに必要なすべての文字を手動で入力する手間が省けます。

    generate_password 関数

    def generate_password(length=12):
        characters = string.ascii_letters + string.digits + string.punctuation
        password = ''.join(secrets.choice(characters) for _ in range(length))
        return password

この関数は安全なパスワードを生成します:

  • パスワードに使用できるすべての文字を含む文字列を作成します。

  • secrets.choice() を使用して、この文字列から文字をランダムに選択します。これは、オペレーティング システムの暗号的に安全な乱数生成機能を使用するため、random.choice() を使用するよりも安全です。

  • これらの文字を 1 つの文字列に結合してパスワードを形成します。

    主な機能

    def main():
        print("Welcome to the Secure Password Generator!")

        try:
            length = int(input("Enter the desired password length: "))
            if length <= 0:
                raise ValueError("Password length must be positive")
        except ValueError as e:
            print(f"Invalid input: {e}")
            print("Using default length of 12 characters.")
            length = 12

        password = generate_password(length)
        print(f"\nYour generated password is: {password}")

この関数はユーザー対話を処理します:

  • ユーザーにパスワードの長さの入力を求めます。
  • 潜在的なエラー (数値以外の入力や負の数値など) を処理します。
  • 指定された長さでgenerate_password()を呼び出し、結果を出力します。 ## スクリプトの実行
    if __name__ == "__main__":
        main()

このブロックは、スクリプトがモジュールとしてインポートされた場合ではなく、スクリプトが直接実行された場合にのみ main() 関数が呼び出されるようにします。

パスワードジェネレーターの機能強化

パスワード ジェネレーターをさらに改善するためのアイデアをいくつか紹介します。

  1. カスタム文字セット: ユーザーがパスワードに使用する文字の種類を指定できるようにします。
  2. パスワード強度チェッカー: 生成されたパスワードの強度を評価する機能を実装します。
  3. 複数のパスワード: ユーザーに複数のパスワードを一度に生成するオプションを提供します。
  4. GUI インターフェイス: Tkinter などのライブラリを使用してグラフィカル ユーザー インターフェイスを作成します。
  5. パスワード ストレージ: 生成されたパスワードを安全に保存する方法 (場合によっては暗号化を使用) を実装します。 ## 結論

ランダムの代わりに Secrets モジュールを使用することで、より安全なパスワード ジェネレーターを作成しました。

リソース

  • パスワード クラッカーの使用を開始する
  • Visual Studio コードに必須の 20 の Python 拡張機能
  • Web スクレイピングとデータ抽出に Python を使用する
  • Python 入門
  • Folium と Python を使用したインタラクティブなマップの作成

以上がSecret Lib を使用して安全な Python パスワード ジェネレーターを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。