对称保序加密方案的实现

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第三方库


热门话题
jframe java对象,框架不工作   我无法使用java netbeans存储本地主机(数据库)的数据   启动备忘单测试时出现java I18n问题/异常   java如何在docker容器的Tomcat7中部署war文件   java如何将@JsonSerialize注释应用于lib类属性?   getter setter何时在java中使用get/set方法   javascript我没有用html显示ajax表为什么?   java如何根据列表中的元素对映射中的键进行排序   java如何将DTO映射到现有的JPA实体?   通过并行处理,使不同线程同时发送邮件的java程序   JavaWebSocket服务器:我能识别客户端吗?   基本Java/Android类模板(<?>)   java为什么JavaFX不能在自制的OpenJDK 17下工作?   在手动调整窗口大小之前,swing Java窗口无法正确重新绘制   java应用程序强制关闭。短信广播接收机   java如何在用户设备中知道第二个应用程序是否安装   java tcollector未收集数据。TSDB是空的   java解压缩包含更多嵌套字符串的字符串   使用CMD脚本安装Java