管理加密的yaml文件的python库。

senic.cryptoyaml的Python项目详细描述


番泻叶

https://travis-ci.org/getsenic/senic.cryptoyaml.svg?branch=master

senic.cryptoyaml是一个用于管理加密的yaml文件的python库,其动机是为应用程序提供一个api,以便以加密的形式读取(和写入)潜在敏感的配置设置(即密码、个人用户信息)。

另一个动机是,即使在访问这些设置的私钥与设置本身同时保留的情况下,安全地删除这些设置也会变得微不足道:现在只需要正确地销毁密钥,而不必担心在存储设备上留下敏感的位和字节。

这个包只是为那个用例定制的一个方便包装器。解析和编写yaml以及加密和解密yaml的实际繁重工作分别由优秀的库PyYAMLcryptography完成。 另外,虽然它们同时支持python 2.x和3.x,但这个包只针对python>;=3.5(因为它是2016年)。

API使用

下面是一个简单的示例:

>>> from senic.cryptoyaml import generate_key, CryptoYAML
>>> new_key = generate_key('secret')
>>> config = CryptoYAML('/path/to/settings.yml.aes', keyfile=new_key)

最初,您必须生成一个密钥(它使用cryptography库中的Fernet symmetric encryption),并使用它来构造一个cryptoyaml实例。

然后,该实例提供一个data属性,该属性最初是一个空字典,您可以用任意数据填充它,前提是PyYAML库可以对其进行编码:

>>> config.data['foo'] = 123

但是,请注意,只有当您显式地将数据提交到磁盘时,数据才会持久化在文件系统上,如下所示:

>>> config.write()

一旦写入,只要仍提供原始机密,就可以重新读取文件:

>>> reread = CryptoYAML('/path/to/settings.yml.aes', keyfile=new_key)
>>> reread.data['foo']
>>> 123

命令行用法

有一个加密的设置文件是整洁的,但有时你可能想看一看或操作它从命令行,而不是编程。

为此,cryptoyaml有三个命令用于生成密钥、创建新文件、读取该文件和设置个别设置:

# cryptoyaml generate_key mysecret
Created new private key at /Users/senic/Development/senic.cryptoyaml/mysecret
# cryptoyaml create mysettings.yml.aes --keyfile mysecret
created new file at /Users/senic/Development/senic.cryptoyaml/mysettings.yml.aes
# cryptoyaml set mysettings.yml.aes foo bar --keyfile mysecret
foo -> bar
# cryptoyaml cat mysettings.yml.aes --keyfile mysecret
{'foo': 'bar'}

环境变量

通常的做法是通过环境变量提供密钥。 简单地设置CRYPTOYAML_SECRET将允许您省略api用法和命令行的键。

发布信息

更改日志

版本遵循严格的向后兼容策略CalVer。 第三个数字只用于回归。

0.1.1(2017-01-03)

化妆品棕色包释放…

更改:

  • fix README markup.
  • fix namespace declaration (to allow it to co-exist with other ^{tt3}$ packages).

0.1.0(2016-12-20)

更改:

初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在带有ActionListener和ifelse语句Jbutton的JFrame上使用JTextFields、JButtons和JLabels不起作用   java如何从另一个应用程序打开我们的活动页面?   UUID生成的字符的java类型   jar包含IsoOutputStream和IsoBufferWrapperImpl类的java   JAVA创建自定义。ECLIPSE中的几个现有类库文件   Java包结构约定   java空指针异常,仅当我尝试数组形式的类型时   来自过滤器的java转发请求   java是在pom中生成Maven依赖项的简单方法。xml?   java请求   在HashMap中使用字符串数组,Java   显示用户在谷歌地图中预定义位置方向的java   在Java中重新测试特定的方法   如何将html表单中的输入转换为Java字符串变量?   java有人知道Maven2 POM类路径容器的Eclipse(WSAD/RAD)插件吗   json从java列表中抓取数据   SpringJava。lang.ClassCastException:org。阿帕奇。德比。客户是ClientPreparedStatement42不能强制转换为组织。阿帕奇。德比。iapi。sql。准备好的报表