文章目录

  • 引言
  • 一、对称与非对称双线性对
  • 二、TypeF简单使用
    • 1.初始化实例
    • 2.生成群元素与计算
  • 疑问与补充

引言

最近在做基于身份的签名算法仿真,涉及到椭圆曲线双线性配对,本人比较小白所以就用了JPBC库来实现。网上比较多教程的主要是使用TypeA曲线,但是TypeA曲线是对称的双线性对,搜索发现TypeF曲线是非对称的,本文简单分享下相关的内容。


一、对称与非对称双线性对

简单来说:设是大素数,均为阶为的乘法循环群,其中是生成元。假设在群,中离散对数问题难解,双线性映射

如果说,就认为是对称双线性对;否则就是非对称双线性对。在设计基于非对称双线性对的密码体制时,群,中元素的长度往往是不同的,因此在两个群中计算效率也是不一样的。可以把主要的运算安排在元素短的群中,提高密码体制的效率。

二、TypeF简单使用

1.初始化pairing实例

把jpbc库里下载的params文件里的f.properties复制到工程下,再开始写代码。这一步不会的可以搜一下网上有大把typeA的教程。

        import it.unisa.dia.gas.jpbc.Element;import it.unisa.dia.gas.jpbc.Field;import it.unisa.dia.gas.jpbc.Pairing;import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory;//import相关的库Pairing bp = PairingFactory.getPairing("f.properties");//读取文件中的椭圆曲线参数 生成一个pairing实例//f曲线是非对称的PairingFactory.getInstance().setUsePBCWhenPossible(true);Field G1 = bp.getG1();Field G2 = bp.getG2();Field Zr = bp.getZr();//生成三个域 z是整数域 G1 G2是包含椭圆曲线上点的域

2.生成群元素与计算

生成需要的群元素,在进行运算时要注意,不同群中的元素不能进行乘法等运算。

在元素后加上.getImmutable(),保证在运算过程中元素值不会跟着改变。

        Element g1 = G1.newRandomElement().getImmutable();//G1生成元Element g2 = G2.newRandomElement().getImmutable();//G2生成元Element sk = Zr.newRandomElement().getImmutable();//个人私钥Element pk = g2.powZn(sk).getImmutable();//用私钥计算公钥       
        e1 = bp.pairing(Sig,g2).getImmutable();//e(s,g2)e2 = bp.pairing(hm,pk).getImmutable();//e(hm,pk)left=e1.getImmutable();right=e2.getImmutable();if(left.isEqual(right)) {System.out.println("签名合法");}

疑问与补充

①TypeF曲线两个群中的元素长度:

中元素长度是40bytes,中元素长度是80bytes。

②我用typeF实现的方案比typeA实现的效率要差好多,是曲线特性的原因吗?

JPBC实现非对称双线性配对:typeF型曲线相关推荐

  1. 基于S型曲线的连续多段曲线插补平滑过渡的规划算法(Matlab)

    写在前面 学习代码都记录在个人github上,欢迎关注~ 前面的博客已经写了关于空间直线与空间圆弧的常用插补算法,而这些都是单一路径,实际中并不实用.对于连续多段路径,传统方法是将多段路径细分,然后对 ...

  2. 第二型曲线和曲面积分总结

    数学含义 第二型曲线积分 在向量场中的积分 形式上为 ∫LXdx+Ydy=∫Lω=∫L(X(t)x′(t)+Y(t)y′(t))dt\int _LXdx+Ydy=\int _L \omega =\in ...

  3. 第一型曲线积分与第一型曲面积分、第二型曲线积分与格林公式

    提示:本文的适用对象为已修过<微积分A1>的非数学系学生,文中题型方法为个人总结,为个人复习使用.部分理解虽然不太严谨,但对于解题的实用性较强.若有疏漏or错误,欢迎批评指正. 一.关于第 ...

  4. 第一型曲线和曲面积分总结

    第一型曲线积分 参数方程表达x=x(t),y=y(t),z=z(t)x=x(t),y=y(t),z=z(t)x=x(t),y=y(t),z=z(t) dl=x′(t)2+y′(t)2+z′(t)2dt ...

  5. 光滑曲线_对第一/二型曲线/曲面积分的小总结

    公式 第一型曲线积分(Line Integrals): 第二型曲线积分(Line Integrals of Vector Fields): 第一型曲面积分(Surface Integrals): 第二 ...

  6. 基于STM32F103的步进电机S型曲线加减速算法与实现

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机,是现代数字程序控制系统中的主要执行元件,应用极为广泛.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的 ...

  7. s型增长的matlab曲线图,matlab拟合s型曲线

    使用?MATLAB 曲线拟合工具箱做曲线拟合在实际的工程应用领域和经济应用领域中... matlab曲线拟合实例_计算机软件及应用_IT/计算机_专业资料.曲线拟合已知数据 x y 1 10 3 5 ...

  8. 机器人学回炉重造(5-2):关节空间规划方法——梯形加减速(与抛物线拟合的线性函数)、S型曲线规划

    文章目录 写在前面 学习代码都记录在[个人github](https://github.com/xuuyann/RobotLearningCode)上,欢迎关注~ 梯形加减速(与抛物线拟合的线性函数) ...

  9. 【数学】第一型曲线积分

    首先先学习弧长积分:[数学]弧长的积分公式,也即求曲线方程曲线的长度,求圆的周长公式 弧长积分的微元如下: [第一型曲线的参数方程] 我们假设都是关于t的函数,有 则积分公式为: 假若在曲线微元ds上 ...

最新文章

  1. PyTorch中的MIT ADE20K数据集的语义分割
  2. photofunia
  3. 计算机科学与技术python方向是什么意思-第一模块·开发基础-第1章 Python基础语法...
  4. Python3使用tkinter编写GUI程序
  5. 域名转发与域名解析有什么区别?
  6. golang管道channel的遍历和关闭:应该使用for...range来遍历
  7. 数据中台离数据资产“价值变现”还有多远?
  8. iOS开发 iOS10兼容访问http
  9. pytest.7.常见套路
  10. PAT (Basic Level) Practice1004 成绩排名
  11. 阿里云市场联合犀思云开启云V认证 首推“严选”模式企业采购更安心
  12. [论文总结] 智慧农业论文摘要阅读概览
  13. 网络编程UDP与TCP
  14. Appium-Get Clipboard(获取剪贴板)
  15. 最小行走距离(dfs+虚树)
  16. 《Java解惑》系列——01表达式之谜——谜题09:半斤
  17. 使用 python 压缩 png 图片,高达 80% 压缩率,肉眼无差异!
  18. 量子态层析(quantum state tomography)
  19. 【CSS】模拟太阳系行星的公转
  20. UE4(unreal engine4)蒙太奇动画删除不想要的帧数

热门文章

  1. python解二元一次方程组
  2. swoole并没有你说的那么好,@韩天峰
  3. k8s pod分类、核心组件、网络模型、kubectl常用命令
  4. 天上的街市Unity游戏场景制作案例(一)
  5. 如何用windows系统自带的截图工具截图
  6. 单位半夜12点打电话给你,让你通知领导明天早上8点参会,而且要准备汇报,你会怎么做?
  7. 添加系统报警短信或邮箱 需要集中配置
  8. 狂妄之人怎么用计算机弹,天谕手游狂妄之人乐谱代码分享
  9. 【备忘】Unity 单界面UI多个挖洞实现(shader+mask)
  10. android 9图工具位子,Android自定义9宫格图片视图