【问题标题】:How do I make a password generator that actually makes a good password with python?如何制作一个真正用 python 制作好的密码的密码生成器?
【发布时间】:2022-10-06 23:53:14
【问题描述】:

如何制作一个密码生成器,该生成器实际上会使用 python 生成诸如“Rainbow123”之类的可读内容?我目前拥有的密码生成器会生成一个密码,例如“efqfq7f9q8ef69qef69g83gf732gf”

  • 列出单词和扩展名,然后使用random.choice() 选择其中一些,然后返回。或者使用 NLP,但这有点矫枉过正。另外,请发布您的代码以向我们展示您所做的事情。
  • 就安全性而言,我不会将 Rainbow123 称为一个好的密码。您可以尝试实现 diceware 密码。
  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。

标签: python password-generator


【解决方案1】:

在 Linux 中使用secrets 模块和words 文件可以获得一个简单的解决方案

import secrets
import string

with open("/usr/share/dict/words", "r") as f:
    words = f.read().splitlines()

secrets.choice(words) + "".join(secrets.choice(string.digits) for _ in range(4))

【讨论】:

    【解决方案2】:

    要在 python 中创建密码生成器,您可以使用 stringrandom.sample

    import string
    import random
    
    LowerCase_Letters = string.ascii_lowercase
    UpperCase_Letters = string.ascii_uppercase
    Numbers = string.digits
    Punctuations = string.punctuation
    All_Letters = []
    All_Letters.extend(list(LowerCase_Letters))
    All_Letters.extend(list(UpperCase_Letters))
    All_Letters.extend(list(Numbers))
    for count in range(1, 2):
        UserName = input("Enter the Username (for whom the password is): ")
        if UserName == "":
            UserName = "Undefined User"
        elif len(UserName) > 100:
            print("Username length too big (shouldn't be more than 100)")
            break
        Password_Length = input("Enter password Length (10-20): ")
        if Password_Length.isnumeric():
            Password_Length = int(Password_Length)
            if Password_Length < 10 or Password_Length > 20:
                Password_Length = 15
        else:
            Password_Length = 15
        Password = ("".join(random.sample(All_Letters, Password_Length)))
        print(
            f"Your Password is {Password}\nWhich is saved in Passwords.txt for the username( {UserName} )"
        )
        with open("Passwords.txt", "a") as Password_Saving_Function:
            Password_Saving_Function.write(
                f"Password for ({UserName}) is  {Password}\n")
    

    【讨论】:

      猜你喜欢
      • 2019-05-10
      • 2020-12-28
      • 1970-01-01
      • 2022-09-23
      • 2021-10-20
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多