使用 Secret Lib 建立安全的 Python 密碼產生器

Barbara Streisand
發布: 2024-10-16 12:10:29
原創
117 人瀏覽過

Build a Secure Python Password Generator Using Secret Lib

建造密碼產生器後,我得到了一些令人驚嘆的評論,其中有兩條對我來說很突出:Guillaume Ste-Marie 主張使用種子來增加隨機性,Christian Ledermann 也主張使用秘密應該替換隨機,因為隨機並不是真正隨機。

秘密模組產生適用於管理密碼、帳戶驗證、安全性令牌和相關秘密等資料的加密強隨機數。

完整的安全密碼產生器代碼

讓我們先查看安全密碼產生器的完整程式碼。如果它看起來很嚇人,請不要擔心;我們將在下一節中逐行分解它。

    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
登入後複製

這兩行導入我們的安全密碼產生器所需的模組:

  • secrets 模組提供了產生適用於管理密碼等機密的加密強隨機數的功能。出於加密目的,它比隨機模組更安全。

  • 字串模組提供包含各種類型字元(字母、數字、標點符號)的常數。這使我們無需手動輸入密碼中可能需要的所有字元。

    產生密碼函數

    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() 更安全,因為它使用作業系統的加密安全隨機數產生器。

  • 我們將這些字元連接成一個字串來形成我們的密碼。

    主要功能

    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 Code 的 20 個基本 Python 擴充
  • 使用 Python 進行網頁抓取與資料擷取
  • Python 入門
  • 使用 Folium 和 Python 建立互動式地圖

以上是使用 Secret Lib 建立安全的 Python 密碼產生器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!