【问题标题】:Python, Store root password securely [duplicate]Python,安全地存储root密码[重复]
【发布时间】:2020-07-20 00:22:48
【问题描述】:

要问我的问题,我应该告诉你我的项目。

所以目前我正在使用 Python 开发本地密码管理器。要使用密码管理器,您最初需要设置一个主密码,并使用该密码解码所有存储的密码。存储的密码存储在 .txt 文件中,但它们不是以纯文本形式存储的。它们被解码,因此您无法直接看到密码。只有拥有主密码才能看到它们。

然后我用我的项目创建一个 .exe 文件。我正在使用带有以下命令的 Pyinstaller:pyinstaller --onefile pythonScriptName.py

之后我使用 WinRar 创建安装程序。我使用安装程序在其他笔记本电脑上安装我的密码管理器,而无需安装 python。

现在我的问题:

我不知道如何存储我的主密码。我的意思是我不能以纯文本形式存储它,因为这样你就可以直接解码我所有的密码,我也不能解码我的主密码来存储它解码,因为要解码我的主密码,我需要另一个密码来解码它(这将导致一个循环)。

我的想法: 如果您安装了我的密码管理器并首先启动它,您需要设置您的根密码。我想知道我是否可以使用这个密码来用这个密码启动我的程序(我的意思是把它作为一个参数并用os.getenv()把它放在我的脚本中。但我不知道这是否有效。

如果有人能解决我的问题,我将不胜感激。

提前谢谢你!!!

【问题讨论】:

  • 密码管理器通常不会存储主密码,是吗?我从来没有使用过密码管理器。这对我来说似乎很奇怪。这不是重点吗,您只需要记住一个(主)密码吗?
  • 重点是我需要对用户进行身份验证。如果我无法存储主密码,我无法检查是否允许用户查看其他密码
  • 但是为什么需要存储呢?我还是不明白。您不能将主密码用作加密方案的私钥吗?我想仍然没有办法确认密码是否正确,但这并不重要 - 如果他们输入错误的密码,解密将不会产生正确的解密密码。
  • 我知道你的意思,但我不仅想自己使用它。我还想将它共享到另一个我不想编码我的密码哈希的计算机。它应该是动态的。
  • 哦,我明白了,这是有道理的。抱歉,我没有任何建议。

标签: python security passwords pyinstaller


【解决方案1】:

不确定这是否对您的情况有所帮助,但由于在这种情况下您同时控制主机和客户端,也许您可​​以实施一次性密码 (OTP) 设置。有一个名为 PyOTP 的 python 模块可能会有所帮助。没有实际使用过,但它可能会为您的问题提供解决方案(文档在这里:PyOTP documentation

【讨论】:

  • 谢谢@Fubar!你能更详细地解释你的想法是什么。我不太明白。
  • 基本上它归结为“在主机上运行位以生成密码 -> 与客户端通信 -> 在客户端接收 -> 在客户端生成密码 -> 在主机上输入密码 ->主机验证或否认”。使用主机端的访问控制,您可以控制谁可以运行主机块来生成机密。由于密码永远不会是正确的密码,除非在 30 秒的窗口内,如果您无权访问主机,则很难闯入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 2012-05-23
  • 1970-01-01
  • 2013-06-02
  • 2015-07-18
  • 1970-01-01
相关资源
最近更新 更多