对称保序加密方案的实现

pyope的Python项目详细描述


PyPi versionTravis build

这是boldyreva对称order-preserving encryption方案(Boldyreva’s paper)的实现。

支持的python版本:2.7和3.4+

disclaimer 1这是一个实验性的实现,在用于生产和/或敏感应用程序之前,应该对其进行彻底的检查和评估。

disclaimer 2boldyreva方案不是标准算法,因此没有测试向量和固定的明文密文 给定密钥的映射。这意味着,一般来说,由包的两个不同版本使用相同密钥加密的明文可能不相等。

快速示例

快速入门

frompyope.opeimportOPErandom_key=OPE.generate_key()cipher=OPE(random_key)assertcipher.encrypt(1000)<cipher.encrypt(2000)<cipher.encrypt(3000)assertcipher.decrypt(cipher.encrypt(1337))==1337

可以指定输入和输出范围。否则,使用默认输入(0..2^15-1)和输出(0..2^31-1)范围。

frompyope.opeimportOPE,ValueRangecipher=OPE(b'long key'*2,in_range=ValueRange(-100,100),out_range=ValueRange(0,9999))assert0<cipher.encrypt(10)<cipher.encrypt(42)<9999

关于保序加密

保序加密(ope)允许比较密文值以了解相应的关系 在潜在的明文之间。根据定义,保序加密方法比 传统的加密算法对于相同的数据量,因为前者泄露了明文的排序信息 价值观。

Ope如何有用?例如,有些系统可能需要ope来执行一组特定的查询(例如range sql 查询)加密数据。这些系统包括CryptDBMonomi等等。

安全性

如上所述,boldyreva方案的安全保证比确定性加密方案的安全保证弱, 但是,如果加密密钥足够长,安全性仍然可以提高。建议使用随机生成的密钥 至少256位长。

运行测试

pytest用作测试框架。运行所有测试:

$ py.test tests/

待办事项

  • 更多测试
  • 优化性能
  • 安全保证?

历史

0.1.0(2017-01-01)

  • 使用“加密”而不是“pycrypto”

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

推荐PyPI第三方库


热门话题
为@Nonnull注释参数编写java单元测试   对于JAVA,如何从它自己的类调用插入排序来将数组分类到一个单独的类中?   Java中嵌套SQL查询的字符串解析   java在所有带有特定注释的方法上调用带注释的方面   在Java中将base64转换为PDF   无法在Android上强制转换java getApplicationContext()   雅加达ee Java ee:如何获取我的应用程序的URL?   IntelliJ:如何导入的文件夹。java文件作为库?   多线程Java(FX)在播放一种声音的同时,播放另一种声音   网络爬虫我需要将proto3版本中protobuf生成的java代码添加到nutch 1.7中   使用JAXRS注释资源的java Restlet客户端   java如何查找给定月份的日期范围   java Minecraft Bukkit插件:我的小游戏传送机不工作   Java Excel搜索和数组列表工作不正常