如何让Python永久记住一个变量或列表?(不使用Pickle!)
我写了一个简单的程序,它会让用户输入一些值,然后在用户再次使用这个程序时,把这些值当作一种密码来用。
我想知道怎么才能永久保存这个值,但不想用Pickle。用数据库存储这些少量数据太大材小用了。用文本文件存储可能对潜在的入侵者不够安全。
有没有什么方法可以相对安全地永久保存这些数据呢?
1 个回答
0
在选择方案时,有几个选项可以考虑,最好的选择取决于你的项目范围。这个项目是你和几个朋友用的个人项目,还是一些公开的、比较严肃的东西呢?
文本文件
看起来,使用一个(文本)文件是最好的选择。你可以用一个合适的加密哈希算法(比如 SHA256
或更好的)来对密码进行哈希处理,然后把这些哈希值和用户名一起存储在文本文件里。
当用户登录时,可以把登录表单中的哈希密码和文本文件里的哈希密码进行对比。
根据具体情况,你可能还想考虑使用 bcrypt 或 scrypt 来处理密码哈希。确保文本文件放在你网页的根目录之外,并且只有需要它的程序可以读取、修改或写入这个文件。
小型数据库
当然,你也可以使用数据库。Sqlite 的开销非常小。与其写入文本文件,不如写入一个仍然只有一个文件大小的数据库。
打开和更新文本文件所需的代码量可能和建立一个 sqlite 连接的代码量差不多。如果你使用某种框架,可能会有一个 ORM(对象关系映射),可以满足 sqlite 连接的需求。如果你将来想升级到更大的数据库,这样的设计是理想的。