管理加密YAML文件的python库。

cryptoyaml3的Python项目详细描述


在隐翅虫在

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

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

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

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

API用法

下面是一个简单的例子:

>>> from 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库可以对其进行编码:

^{pr2}$

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

>>> 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.2.0(2017-02-27)

  • cryptoyaml的形式重新发布(代替隐翅虫)使包装更简单,并降低品牌形象。在

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第三方库


热门话题
在Java7和Java8中从现有列表创建不同的列表?   java如何在HP ALM中上载测试结果   java请检查我想使用的代码,当用户在第一次输入中输入0时,条件必须停止   带显示列表的java OpenGL照明   尝试获取活动的DefaultSharedReferences时发生java NullPointerException   java如何区分日期时间类型应为yyyymmdd hh:mm:ss的两个日期   Java中对象上的循环   java jvm挂起并杀死3&jmap失败   Tomcat下的java URLClassLoader   java如何对基于KinesRecord的DoFn进行单元测试?   java Estado HTTP 404–找不到Eclipse/Tomcat   java Spring:缺少必需的请求正文。无法将JSON传递给RestController   java Drools工作台目标   java@Async在REST类中不起作用   rest如何在用户使用java输入时更有效地从Yammer获取消息?   java监视递归过程中创建的内部堆栈上的值   java如何集群和负载平衡Spring+OSGi应用程序   java NotSerializableException对象