简单加密工具

pbp的Python项目详细描述


PBP

V0.2.1-实验性

pbp[0]是一个简单的python包装器和命令行接口 提供类似PGP的基本功能。它使用 用于kdf和更简单的包格式的scrypt,它应该是 很难找到指纹,PBP也提供了一个实验性的进展 保密模式和多方dh模式。

安装

您可能需要运行(或等效的命令)sudo apt get install git python virtualenv gcc python dev libffi dev scrypt以满足所有基本依赖项。 安装libnadium(http://doc.libsodium.org/installation/README.html)。

pip安装pbp

也可选择用于干草叉支架

pip install pyusb==1.0.0b1

设计目标:

  1. use modern crypto
  2. provide similar functionality to PGP
  3. be extensible
  4. difficult to identify based on fingerprinting
  5. provide extensive testing
  6. strive for security

加密

加密原语基于 http://nacl.cr.yp.to。使用的kdf是scrypt。

PGP类

提供基本的公钥加密/解密、签名/验证和密钥 加密/解密模式,以及签名、验证、列表, 生成、导出和导入密钥。

可扩展性

使用pbp和底层pynadium[1]库很容易扩展 PBP公司。一些例子是实验性的前向保密模式(参见 doc/chaining dh.txt中的说明),支持ECDH密钥 从命令行交换并生成任意大的 随机字节流。

[1]https://github.com/stef/pysodium也可在
https://pypi.python.org/pypi/pysodium

指纹识别

PBP试图避免存储任何敏感的明文信息, 加密文件都应该看起来像随机噪声。为了一个描述 数据包格式见doc/fileformats.txt。

测试

所有py文件都带有内部测试,单元测试在 tests.py,命令行功能在test.sh中测试。

安全性

PBP锁定进程内存,因此无法将其交换到磁盘。阿尔索 pbp使用securestring[2]在 在内存中使用,因此密钥有很短的泄漏机会。

[2]https://github.com/dnet/pysecstr

用法

生成密钥

pbp -g -n alice

使用公钥加密将howdy.txt从alice发送到bob

pbp -c -S alice -r bob -i howdy.txt

使用公钥加密解密加密文件

pbp -d -S bob -i howdy.txt.pbp

使用密钥加密发送howdy.txt

pbp -c -i howdy.txt

使用密钥加密解密加密文件

pbp -d -i howdy.txt.pbp

在howdy.txt上签名

pbp -s -S alice -i /howdy.txt

验证howdy.txt

pbp -v -i howdy.txt.sig

签名bobs键

pbp -m -S alice -n bob

按Carlos键检查信号

pbp -C -n carol

alice使用实验性的前向机密模式将howdy.txt加密到bob

pbp -e -S alice -r bob -i howdy.txt -o ./secret-message

bob使用实验性的前向机密模式从alice解密howdy.txt

pbp -E -S bob -r alice -i ./secret-message

启动ECDH密钥交换

pbp -D1

响应ECDH密钥交换

pbp -D2 -Dp ‘public component from D1’

完成ECDH密钥交换

pbp -D3 -Dp ‘public component from D2’ -De ‘secret exponent from D1’

加密随机性的随机流23GB

pbp -R -Rs 23G -o /mnt/huge_fs/random_data

参与4路DH交换,第一条消息

pbp -Ds -Dp 4 -S alice -n ‘friends001’ -i oldkeychain -o newkeychain

参与4路DH交换,第2条消息

pbp -De -S alice -n ‘friends001’ -i oldkeychain -o newkeychain

这是一个大管道,它在爱丽丝、鲍勃和卡罗尔之间创建了一个3路ECDH秘密:

pbp -Ds -S alice -Dp 3 -n ‘test-dh’ -i /dev/null |
pbp -Ds -S bob -Dp 3 -n ‘test-dh’ | pbp -Ds -S carol -Dp 3 -n ‘test-dh’ | pbp -De -S alice -Dp 3 -n ‘test-dh’ | pbp -De -S bob -Dp 3 -n ‘test-dh’

当然,您可以使用任何类型的传输机制来代替管道

集成

您可以将以下内容添加到.vimrc中

map ;e :%!/bin/sh -c ‘pbp -c 2>/dev/tty | base64’<C-M> map ;d :%!/bin/sh -c ‘base64 -d | pbp -d 2>/dev/tty’<C-M> map ;s :,$! /bin/sh -c ‘pbp -s -a -S stf 2>/dev/tty’<C-M> map ;v :,$! /bin/sh -c ‘pbp -v -a 2>/dev/tty’<C-M>
  1. 2013年,STF<;s@ctrlc.hu>;,DNETvsza@vsza.hu,AGPLv3.0+

[0]而且,嘴里塞满干饼干的PBP也很有趣。 不要在公司里尝试这个!

[![生成状态](https://travis-ci.org/stef/pbp.svg?branch=master)](https://travis-ci.org/stef/pbp

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

推荐PyPI第三方库


热门话题
java如何定制springdata存储库方法名称?   html有没有办法将java应用程序或JApplet嵌入到网站中?   Jackson ObjectMapper将java从字符串序列化为JSON作为namevalue   java刷新JTable?   用Java程序分发用JavaDB制作的数据库   java Android如何启动新活动   当集合大小超过500.000时,java的处理速度会显著降低   在java的分层目录中的多个目录中查找相同的文件   java如何将ArrayList数据插入数据库   java如何修改此代码,使其时间复杂度为o(logn)或o(n),而不是o(n^2)   java面板(SimplePanel)中仅显示图像的前1/3(大约),   jakarta ee Java Bean和企业Java Bean之间的区别?   创建AWS Cloudfront自签名URL(java sdk)时出现amazon web服务错误   基于Jersey和Jackson查询参数的java动态属性过滤