最近做了几个项目,均用到了PBC库,由于项目需求,我用了JAVA语言的JPBC和go语言的PBC包,踩过非常多的坑,所以打算写一下关于PBC的东东,自己也用这个库开发了BB04签名,BBS04签名,BLS签名和IBM的idemix项目的升级版本idemix-plus,大家喜欢的话还请帮我的github项目点星星哟。
我直接引用一篇文章关于PBC库的介绍。
PBC(Pairing-Based Cryptography Library) 是实现双线性对运算的函数库 . 这个开源代码 C 函数库是由
Stanford 大学开发 , 库的地址为 http://crypto.stanford.edu/pbc/. PBC 函数库为双线性对实现提供了接口 , 是基
于双线性对密码体制研究的一个非常有用的辅助工具 . 目前双线性的计算已经非常有效 . 下面是 128 比特
安全级别的双线性对 ( 相当于 256 比特的 ECC 和 3000 比特的 RSA) 利用 BN 曲线实现的时间竞赛 : 2007 年的双
线性对会议上 , Devigili 等人 [19] 在 32-bit Intel Pentium IV @ 3.0 GHZ 的机器上的实现用了 23 ms; 2008 年 ,
Grabher, Großschädl, Page [20] 在 64-bit Intel Core 2 Duo @ 2.4 GHz 的机器上用了 6 ms; 同年 , Hankerson,
Menezes, Scott [21] 也是在 64-bit Intel Core 2 Duo @ 2.4 GHz 的机器上的实现只用了 4.2 ms; 2010 年 , Naehrig 等
人 [22] 在 64-bit Intel Core 2 Duo @ 2.8 GHz 机器上的实现用了 1.5 ms; 2010 年 , Beuchat 等人 [23] 对 254 比特 BN 曲
线上的最优 Ate 对在 64-bit Intel Core i7 @ 2.8 GHz 机器上的实现用了 0.8 ms. 目前对这一安全级别的双线性
对实现的最好记录是 2011 年 Aranha 等人 [24] 在欧密会上的结果 : 0.56 ms(64-bit AMD Phenom II @ 3.0 GHz),
相当安全级别的 256 比特的 ECDSA 验证是 0.8 ms, 而 2048 比特和 4096 比特的 RSA 签名分别是 2.6 ms 和 18.8
ms. 现在仍然有一些在双线性对实现方面的工作 , 有软件方面的 , 也有在硬件方面的实现 .
PBC库是用于双线性对运算的一个非常棒棒哒的库函数,支持C++,java,Python等多种语言,我主要从我使用的Java库函数和go库函数做讲解
首先介绍一下pbc库go语言库的安装方法,其实这个包是基于C++库开发的,所以学习go安装方法可以对C++库安装有帮助,这里我就不赘述了。
我的电脑环境为ubuntu18,安装方法在我的有,我给大家截个图:
安装GMP库
安装PBC然后再安装go库函数
按照这个步骤走应该不会报错,如果有错应该是一些依赖有问题,谷歌下应该就能解决,祝大家顺利## PBC
这个是java库,安装方法比go语言的简单,我直接上教程
随后,在弹出的对话框中,将这个文件夹起名为lib,文件夹位置放置在jPBC工程的根目录下,如图:
接下来,将jPBC中所有的jar文件拷贝到lib文件夹中。注意,虽然都拷贝过来了,但是有关PBC Wrapper的内容都无法使用,因为我们现在并没有本地Shared PBC Library。拷贝进lib后,右键点击jPBC工程,选择Refresh,我们就可以看到lib文件夹下面已经有jar文件了。然后,同样右键点击jPBC工程,选择Properties,再弹出的对话框中选择Java Bulid Path,如图所示。
在右面选择Add JARS,将jPBC的所有jar文件引入其中。在此我仅引入了jPBC核心的两个jar包,即为api和plaf,如图所示。
然后
我们需要把a.properties放置在工程的根目录下面。比如,如果工程路径为D:\workspaces\jPBC,那么a.properties就放在这个目录下面。那么,a.properties从哪里能够拿到呢?实际上,jPBC压缩包中,有一个param文件夹,里面放置的就是典型的参数,直接用里面的a.properties即
这样就全部完成了,祝大家安装顺利。