如何让Python永久记住一个变量或列表?(不使用Pickle!)

0 投票
1 回答
2645 浏览
提问于 2025-04-18 13:09

我写了一个简单的程序,它会让用户输入一些值,然后在用户再次使用这个程序时,把这些值当作一种密码来用。

我想知道怎么才能永久保存这个值,但不想用Pickle。用数据库存储这些少量数据太大材小用了。用文本文件存储可能对潜在的入侵者不够安全。

有没有什么方法可以相对安全地永久保存这些数据呢?

1 个回答

0

在选择方案时,有几个选项可以考虑,最好的选择取决于你的项目范围。这个项目是你和几个朋友用的个人项目,还是一些公开的、比较严肃的东西呢?

文本文件

看起来,使用一个(文本)文件是最好的选择。你可以用一个合适的加密哈希算法(比如 SHA256 或更好的)来对密码进行哈希处理,然后把这些哈希值和用户名一起存储在文本文件里。

当用户登录时,可以把登录表单中的哈希密码和文本文件里的哈希密码进行对比。

根据具体情况,你可能还想考虑使用 bcrypt 或 scrypt 来处理密码哈希。确保文本文件放在你网页的根目录之外,并且只有需要它的程序可以读取、修改或写入这个文件。

小型数据库

当然,你也可以使用数据库。Sqlite 的开销非常小。与其写入文本文件,不如写入一个仍然只有一个文件大小的数据库。

打开和更新文本文件所需的代码量可能和建立一个 sqlite 连接的代码量差不多。如果你使用某种框架,可能会有一个 ORM(对象关系映射),可以满足 sqlite 连接的需求。如果你将来想升级到更大的数据库,这样的设计是理想的。

撰写回答