纯python rijndael(aes)和pbkdf2库。python2.7-与python3兼容。
pprp的Python项目详细描述
概述
这个包是对没有发布pypi的补救,纯python rijndael(aes)实现,而且通常没有可用的 兼容python2和python3。pbkdf2也是如此 密钥扩展算法。
加密程序采用一个源生成器(它生成单个块)。在那里 是否为来自变量的数据和来自 文件。如果你想写你自己的,那是微不足道的。加密机和 解密函数作为生成器编写。解密数据包含pkcs7 衬垫。提供了一个实用函数来修剪这个(trim_pkcs7_padding)。
实现包括python2和python3 rijndael和pbkdf2,并在加载时选择版本。
为了与aes兼容,默认块大小为128位。
这个项目也被称为pprp,它代表“纯python” Rijndael和PBKDF2”。
安装
通过pip安装:
$ sudo pip install pprp
示例
加密和解密数据,并比较结果。这个例子适用于 python 2和3都有。
顶级导入和定义:
import sys import io import os.path import hashlib import pprp import pprp.config # Make the strings the right type for the current Python version. def trans(text): return text.encode('ASCII') if sys.version_info[0] >= 3 else text passphrase = trans('password') salt = trans('salt') key_size = 32 data = ("this is a test" * 100).encode('ASCII')
进行键扩展:
key = pprp.pbkdf2(passphrase, salt, key_size)
从可用数据创建源:
sg = pprp.data_source_gen(data)
将源输入加密机:
eg = pprp.rjindael_encrypt_gen(key, sg)
将加密机输入解密程序:
dg = pprp.rjindael_decrypt_gen(key, eg)
将输出接收到变量(并自动修剪填充):
decrypted = pprp.decrypt_sink(dg)
还有一个decrypt_to_file_sink接收文件对象作为 第一个论点。
检查结果:
assert data == decrypted
下面是示例脚本输出的一部分 (test/example.py)。注意,由于这是一个有效的, 基于生成器的设计,每个块的加密之后是 解密:
2014-07-01 12:24:13,182 - pprp.source - DEBUG - Yielding [data] source block: (0)-(0) 2014-07-01 12:24:13,182 - pprp.adapters - DEBUG - Encrypting and yielding encrypted block: (0) 2014-07-01 12:24:13,183 - pprp.adapters - DEBUG - Decrypting and yielding decrypted block: (0) 2014-07-01 12:24:13,183 - pprp.source - DEBUG - Yielding [data] source block: (1)-(16) 2014-07-01 12:24:13,183 - pprp.adapters - DEBUG - Encrypting and yielding encrypted block: (1) 2014-07-01 12:24:13,183 - pprp.adapters - DEBUG - Decrypting and yielding decrypted block: (1) 2014-07-01 12:24:13,183 - pprp.source - DEBUG - Yielding [data] source block: (2)-(32) 2014-07-01 12:24:13,183 - pprp.adapters - DEBUG - Encrypting and yielding encrypted block: (2) 2014-07-01 12:24:13,183 - pprp.adapters - DEBUG - Decrypting and yielding decrypted block: (2) 2014-07-01 12:24:13,184 - pprp.source - DEBUG - Yielding [data] source block: (3)-(48) 2014-07-01 12:24:13,184 - pprp.adapters - DEBUG - Encrypting and yielding encrypted block: (3) 2014-07-01 12:24:13,184 - pprp.adapters - DEBUG - Decrypting and yielding decrypted block: (3) ...
注释
如果您不希望 违约。默认块大小也可以通过pprp_block_size更改 环境变量。