纯python rijndael(aes)和pbkdf2库。python2.7-与python3兼容。

pprp的Python项目详细描述


概述

这个包是对没有发布pypi的补救,纯python rijndael(aes)实现,而且通常没有可用的 兼容python2python3。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更改 环境变量。

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

推荐PyPI第三方库


热门话题
ArrayList中实体对象上的JAVA泛型   带Redis的爪哇芹菜vs单用Redis   java在设备面向横向时隐藏标题栏/通知栏   java JXTreeTable:如何使用ComponentProvider为一列设置渲染器   java创建异常的成本与记录异常的成本相比   java在方法参数中使用setter传递新对象   java在一个类中的方法与另一个类中的方法交互时遇到问题   java如何迭代2个大小相等的ArrayList   Java getDesktop()。open在Windows中工作,但在Mac中不工作   从tomcat切换到jetty后的java“无法启动嵌入式容器”,Spring引导   java如何使用void方法   java如何在解组时在JAXB的ValidationEventHandler中获取节点值?   如何使用Akka Java API创建不响应的TCP接收器   JavaScriptjQuery在java中将记录上传到数据库时的进度条   如何在重新绘制时在java小程序中显示上一个图像