创建受密码短语保护的blob

protectedblob的Python项目详细描述


#受保护的blob

[![构建状态](https://travis-ci.org/lukhnos/protectedblob-py.svg?branch=master)(https://travis ci.org/lukhnos/protected blob py)


protectedblob是一个库和实用程序,它可以从明文创建
受密码保护的blob并对其进行解密。

我正在研究
[移动密码管理器](https://github.com/lukhnos/pocketpasswords)
,这取决于它。此项目也是创建同时支持Python2.7和3.4的库
的练习,以及许多其他库开发
练习。


还请注意,此代码没有经过任何安全性
检查。风险自负。



以及3.4.



对于OSX用户来说,这意味着你
必须安装XCODE或XCODE命令行工具(这样你就有了
CLAN/C/++编译器)。在linux上,您需要gcc,在很多
发行版上,还需要相应的python开发包,比如centos上的
`python devel',debian或ubuntu上的`python dev'。

在开发模式下安装代码:

python setup.py develop

要加密文件:

protectedblob encrypt--input<;input file>;--output<;output file>;

将提示您输入密码短语两次。还有一个可选的
`--rounds`参数来覆盖默认的轮数。


要解密:


protected blob decrypt--input<;input file>;--output<;output file>;



以及实际的密文。在加密明文之前,我们生成一个随机密钥。
这使得以后可以更改密码短语。


随机密钥使用从提供的
密码短语派生的另一个密钥加密。使用密钥派生函数(kdf)。为了增加导出密钥的强度,使用了许多轮。

a
也会生成随机盐。默认轮次数为65536次,但应在快速计算机上使用
更多轮次。

在ecb模式下,使用aes-256(128位块,256位
密钥)对真正的加密密钥进行加密。我们实际上不直接使用加密密钥。相反,
我们从中派生出另外两个密钥:一个用于aes-256密码,另一个用于
hmac函数。这两个密钥是通过在ecb模式下使用aes-256分别加密32字节的0x00和32字节的0x01来派生的。然后,明文
在cbc模式下使用aes-256和128位iv(初始化
向量)进行加密。

hmac函数是sha-256,
,hmac是从密文创建的(所以先加密,然后是mac)。

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

推荐PyPI第三方库


热门话题
java需要一种简单的方法来创建用于排序的comparator类   java getReadableDatabase和getWriteableDatabase无法解析   查找列表<Long>中与某个元素对应的所有索引的java方法   安卓将视图添加到ViewFlipper会导致java。StackOverflowerr语言   java根据它所包含的长“curTime”类字段将N的列表拆分为24(小时)   Android N中的Java8流API   自动生成Java策略文件的安全性   垃圾收集鼓励Java中的主要GC(但不是STW GC)   java如何检查UDP服务器上侦听的客户端数量   在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机   java如何使用Spring Boot创建部分代理   java是否有一个网站或资源可以完全比较EJB版本   java无需使用第三方库从gradle生成输出   继承由于这个多态性的基本示例中的语法有什么不同吗?(爪哇)   java字符串数组中的空字符串   java为什么CMS中的初始标记阶段是串行的   为什么Lucene有时与InChIKeys不匹配?   安卓通知Java应用程序数据库中的更改   java如何将单个json对象值解析为按钮   java打印堆栈将运行时错误跟踪到文件