视频地址:https://www.bilibili.com/video/BV1o5411Y77r/

1. JPBC简介

Java Pairing-Based Cryptography Library
对PBC库(C语言)的Java封装
常用于基于配对的密码学算法仿真(身份基加密、属性基加密等)

2. JPBC环境

JPBC: http://gas.dia.unisa.it/projects/jpbc/download.html
JDK: https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
IntelliJ IDEA: https://www.jetbrains.com/idea/download/#section=windows

Eclipse: https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-06/R/eclipse-java-2020-06-R-win32-x86_64.zip

3. JPBC使用

3.1 基本使用

  • 创建项目,添加jar包依赖
  • 引用库 (import,部分IDE支持自动导入)
  • 生成Ppairing实例(从文件导入或者自选参数生成)
  • 验证双线性 e(ga,gb)=e(g,g)abe(g^a,g^b) = e(g,g)^{ab}e(ga,gb)=e(g,g)ab

测试代码

    // 一、基于特定椭圆曲线类型生成Pairing实例// 1.从文件导入椭圆曲线参数Pairing bp = PairingFactory.getPairing("a.properties");// 2.自定义曲线参数// int rBits = 160;// int qBits = 512;// TypeACurveGenerator pg = new TypeACurveGenerator(rBits, qBits);// PairingParameters pp = pg.generate();// Pairing bp = PairingFactory.getPairing(pp);// 二、选择群上的元素Field G1 = bp.getG1();Field Zr = bp.getZr();Element g = G1.newRandomElement().getImmutable();Element a = Zr.newRandomElement().getImmutable();Element b = Zr.newRandomElement().getImmutable();// 三、计算等式左半部分Element ga = g.powZn(a);Element gb = g.powZn(b);Element egg_ab = bp.pairing(ga,gb);// 四、计算等式右半部分Element egg = bp.pairing(g,g).getImmutable();Element ab = a.mul(b);Element egg_ab_p = egg.powZn(ab);if (egg_ab.isEqual(egg_ab_p)) {System.out.println("yes");}else {System.out.println("No");}

3.2 避坑指南(重要)

getImmutable()duplicate()

典型错误示例

    Pairing pairing = PairingFactory.getPairing("a.properties");Element g = pairing.getG1().newRandomElement();Element a = pairing.getZr().newRandomElement();System.out.println("g: " + g);Element ga = g.powZn(a); //the value "g" will also be changed to gaSystem.out.println("g: " + g);System.out.println("ga: " + ga);

避免方法

  • 定义g的时候使用 getImmutable() 方法
    Element g = pairing.getG1().newRandomElement().getImmutable();
  • 或者使用g的时候使用 duplicate() 方法
    Element ga = g.duplicate().powZn(a);

JPBC库(基于配对的密码学)入门和避坑指南相关推荐

  1. 蓝牙BLE(BlueTooth BLE)入门及爬坑指南

    前言 最近比较忙,两三周没有更新简书了,公司正好在做蓝牙BLE的项目,本来觉得挺简单的东西从网上找了个框架,就咔咔地开始搞,搞完以后才发现里面还有不少坑呢,故而写一篇蓝牙BLE入门及爬坑指南,旨在帮助 ...

  2. HarmonyOS实战 —基于hi3861芯片鸿蒙2.0的避坑指南

    HarmonyOS实战 -基于hi3861芯片鸿蒙2.0的避坑指南 特别说明:本文章与卡片开发无关,想看卡片开发的不用往下读了 最近学习鸿蒙设备开发的过程中遇到了很多问题,因为目前几乎所有设备开发教程 ...

  3. 虚拟服务器windows硬盘30t,避坑指南:基于Windows系统的NAS通过NFS将硬盘空间共享给Hyper-V黑群晖...

    避坑指南:基于Windows系统的NAS通过NFS将硬盘空间共享给Hyper-V黑群晖 2019-07-08 07:30:00 64点赞 601收藏 91评论 方案选择 首先感谢矿难,性价比超高的蜗牛 ...

  4. jeecg-boot 入门-小白避坑篇

    目录 一.jeecg-boot 入门 二.jeecg-boot 框架知识点 2.0 jeecg-boot 主题色修改 2.1 jeecg数据库表-字段规范 2.2 j-dict-select-tag ...

  5. 我的GO+语言初体验-Go+入门安装避坑手册

    一.入门简介 英文介绍 For engineering: working in the simplest language that can be mastered by children. For ...

  6. STM32F407 DP83848驱动调试过程总结(标准库到HAL库移植避坑指南)

    文章目录 移植到正点原子例程 下载ST最新F4平台例程适配 使用CubeMX从头开始 移植标准库上层函数到CubeMX初始化的HAL库 项目要从之前的STM32F107平台移植到STM32F407平台 ...

  7. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法

    文章目录 一.项目场景 二.基本模块原理与调试方法分析--信源部分: 三.信号处理部分和显示部分: 四.基本的通信链路搭建: 四.特殊模块:interpreted MATLAB function: 五 ...

  8. 基于xdocreport导出复杂word文档,专业避坑指南

    如果你要先问我为什么要导出word?那么请你走开,你个杠精! 在完成这个功能时花费了大量的时间查阅资料,发现能满足导出复杂word文档的工具只有xdocreport,如果有其他的工具欢迎分享.废话不多 ...

  9. 〖Python零基础入门篇㊸〗- 异常处理的避坑指南

    万叶集

最新文章

  1. SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)
  2. 程序员,不要急于学习编程语言,先学会如何解决问题
  3. 跳出数据计算拯救人智能
  4. OpenMP入门教程(一)hello world
  5. Vue中Web组态实现方案-WebTopo的使用
  6. 小赋诗歌一首,以感学生时代结束
  7. python str translate,str.translate() --文本过滤和处理
  8. hpsocket java代码_HPSocket介绍与使用
  9. VR为难民发声,传递人道主义精神
  10. python判断、创建文件夹
  11. JavaScript符号基础
  12. 顶尖,何为顶尖?你知道吗?我知道..
  13. [UE4] Spawn Emitter Attached 特效消失的问题的解决方法:ParticleSystem 必须附着在角色的 Mesh 上
  14. 树莓派python蓝牙_在树莓派3B上做蓝牙音频
  15. Office软件Android无法登录,office mobile(安卓版)无法使用
  16. 用户输入一个字符串,请将字符串中的所有字母全部向后移动移动一位,最后一个字母放到字符串的开头,最后将新的字符串输出。
  17. 《网络安全应急响应技术实战指南》知识点总结(第10章 流量劫持网络安全应急响应)
  18. Python写银行系统
  19. mysql创建用户只能访问数据库中一张表
  20. 未来的趋势—电子签约流行

热门文章

  1. Mov文件字幕添加与播放
  2. PMI2016大会最全资料集合
  3. Java第一个程序的相关解释
  4. IDEA设置多行标签页
  5. openPGP加密解密
  6. python3的下载和安装
  7. SQL基础系列(七)——CASE表达式
  8. 闪迪u盘不能识别好办法_SanDisk U盘无法识别解决
  9. 教程篇(7.0) 09. FortiGate安全 应用控制 ❀ Fortinet 网络安全专家 NSE 4
  10. 二维码墓碑:可手机“扫”墓祭祖