创建受密码短语保护的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)。
[![构建状态](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)。