我可以用python的随机模块制作一个安全的基于 "纯函数 "的密码生成器吗?

问题描述 投票:0回答:1

所以我一直在寻找不使用像LastPass这样的基于服务器的密码管理器来管理密码的方法,我看到了 https:/lesspass.com. 根据网站的介绍,这个工具可以为给定的主密码、用户名和网站创建相同的密码。我非常喜欢这个想法,并决定使用随机模块在python中制作自己的概念证明。我做了这个简单的函数。

    import random
    import string
    import os


    MASTER_PASS=os.environ.get('MASTER_PASS')


    def generate(platform, user, length):
        random.seed(platform+user+MASTER_PASS)
        letters=string.ascii_letters +string.digits + string.punctuation
        password=""
        for i in range(length):
            password+=random.choice(letters)
        print(password)



    generate("facebook", "xyz.abc", 32)

我想只要没人知道我的MASTER_PASSWORD就足够安全了 但我无法摆脱这种感觉 这实在是愚蠢的不安全。谁能指出这个方法的明显缺陷,并提出一些提高健壮性的方法?

EDIT:

我认为我需要澄清一些问题.我想做一个程序,在这个程序中,我可以输入我的平台名,用户名和主密码来生成密码。另外,每当我输入相同的组合时,必须得到相同的密码。我基本上是想创建一个无金库的密码管理器,不依靠任何服务器来存储我的密码。

python random cryptography passwords password-encryption
1个回答
2
投票

的,而不是使用像LastPass这样基于服务器的密码管理器。random 模块不是加密安全的。你应该使用 secrets 模块代替。

特别是,秘密应该优先使用随机模块中的默认伪随机数生成器,因为随机模块是为建模和模拟而设计的,而不是安全或加密。

API是相同的,所以你的代码也能用。

至于方法,这几乎是其他密码生成器的工作方式。只要记住密码中到底有多少熵(取决于 length &的总规模。letters).

© www.soinside.com 2019 - 2024. All rights reserved.