【问题标题】:how to make pickled file unreadable in any text editor如何在任何文本编辑器中使腌制文件不可读
【发布时间】:2012-11-14 17:06:50
【问题描述】:

如果我们强行打开它,我使用这种方法创建的腌制文件在文本编辑器中是可读的,

import pickle,os
print os.path.split(__file__)[0]
storloc= os.path.normpath(os.path.join(os.path.split(__file__)[0],"test.pkl"))

newD={"String":"this is the world", "int":1,"float":1.5}
print newD
print storloc
d = open(storloc, 'wb')
pickle.dump(newD,d)
d.close()

如何在任何文本编辑器中使腌制文件(test.pkl)不可读?

【问题讨论】:

  • 嗯?为什么需要它,为什么要破坏协议?
  • 你搜索过“加密”吗?
  • 好吧,我正在制作一个小工具,可以保存 ftp 用户名和密码,而不是让用户每次都输入,我想给它选项将其保存到磁盘上...这样用户就可以携带泡菜文件,当他再次使用该工具时,他只是使用腌制文件来获取自动填写的信息,如果有人在文本编辑器中打开,数据不会被披露......
  • 那是默默无闻的安全,这不是安全。相反,我建议查看操作系统提供的用于保存凭据的密钥环服务。
  • 查看这个答案以了解如何正确地做到这一点stackoverflow.com/questions/157938/…

标签: python pickle


【解决方案1】:

试图让 Python pickles 等简单的格式对密码安全是一种愚蠢的游戏。

请改用keyring 包并将其留给操作系统以安全地存储您的密码。

import keyring

username = # Obtain a stored username or ask the user
password = keyring.get_password('your_application_name', username)

if password is None or verify_password_failed:
    password = # Obtain a password from the user
    keyring.set_password('your_application_name', username, password)

keyring 包使用操作系统提供的密钥环(OS X、Windows、KDE、Gnome),但如有必要,将退回到它自己的加密存储。

【讨论】:

  • 它是标准库的一部分吗?不,所以我不能使用它?不管它好不好,对于当前的任务我不能使用钥匙圈
  • @san:为什么不能使用外部库?只需一个简单的pip install keyringeasy_install keyring 即可安装它,如果您需要分发您的项目,只需在项目setup.py 中添加一个install_requires 依赖项即可。
  • 由于我不认识我的工具的用户,引导他们先安装然后运行我的工具并不容易......
  • @san:他们将使用easy_install yourtoolpip install yourtool,安装工具将为您处理keyring 依赖项。请参阅Hitchhiker's Guide to Packaging。否则,我们将永远无法使用 Python..
  • 我相信你,但我为 Autodesk Maya 艺术家制作工具,他们不擅长编程,让他们学习他们不愿意学习的东西,这会让他们拒绝对他们来说听起来很复杂或什么他们不确定自己在做什么,我会完全购买您为将来涉及使用 PIP 或 easy_install 的用户的项目提供的产品...
【解决方案2】:

只需在转储调用中添加第三个参数 - 它是协议参数,只有默认的一个 (0) 是 ASCII 编码的 - 协议 1 和 2 只是二进制的,应该在文本编辑器中进行修改。

但是,这安全 - 如果您不想看到密码,请检查 pycripto,并对您的文件进行一些适当的加密。

【讨论】:

  • 所以我要解决我的问题,Keith 提到使用 zip 和 jsbueno 的标志值设置为 2 会导致 txt 文件不可读,但我可以解开它并恢复数据
猜你喜欢
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 2019-06-25
相关资源
最近更新 更多