使用 Secret Lib 构建安全的 Python 密码生成器

Barbara Streisand
发布: 2024-10-16 12:10:29
原创
109 人浏览过

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学习者快速成长!