PBC下载、安装及基本使用

本文介绍了PBC库的下载、安装过程及基本使用方法。包括依赖GMP库的安装,源码配置与编译,以及如何在程序中包含PBC库并链接GMP库。此外还介绍了PBC库的主要数据类型和函数类别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PBC下载、安装及基本使用

下载 安装

  • 在下PBC之前需要GMP库
  • 在官网找到相应的包进行安装
  • 我采用源码安装,将下载的pbc-0.5.14.tar.gz解压,并进入解压后的目录

        #对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,根据提示先将依赖包安装好
    ./configure
        #对源码进行编译
    make
        #将编译好的程序安装到相应目录,默认的目录是/usr/local/lib
    sudo make install
  • 为了速度和简单,在开发环境下,可以使用simple.make。但它的可移植性较弱

        #PBC使用一些GUN C扩展作为内嵌的函数
    make -f simple.make

基本的使用

  • 程序使用这个PBC库应该包含头文件pbc.h

        #include <pbc/pbc.h>
  • 在链接时,加上PBC和GMP库

    gcc program.c -lpbc -lgmp -L.
  • PBC在以下几个方面遵循GMP

    • 输出参数总是先于输入参数
    • 在调用函数时,相同的变量可以同时用作输入和输出
    • 在使用一个变量之前,必须有且仅有一次初始化。不再使用它的时候,必须清除掉。为了效率,不必要的初始化和清除应该尽量避免
    • 在函数的调用中,PBC中以_t结尾的变量会和GMP有相同的行为,即引用传递。换句话说,在GMP里,如果一个函数修改了一个输入变量,即使函数返回到被调用的作用域,该变量依然会保留修改的值
    • 像GPM,变量在需要的时候能自动的分配内存。默认情况下,malloc()和与它相似的函数被调用,但是这是可以改变的
    • PBC函数大部分是可重入函数
  • 因为PBC库是建立在GMP库上的,所以GMP类型依然是可用的。PBC的类型与GMP的类型基本相似。下面的是来自GMP手册的一个示例,同时也展现怎样声明PBC数据类型element_t

    element_t sum;
    struct foo{ element_t x, y; };
    element_t vec[20];
  • GMP对于整数有mpz_t类型,对于有理数有mpq_t类型等。不同的是,PBC使用element_t数据类型作为不同代数结构的元素,比如椭圆曲线的群,多项式的环和有限域。函数假定它们的输入来自恰当的代数结构

  • PBC的数据类型和函数被分为以下几类,仅前两个就足以满足一系列的应用
    • element_t 代数结构的元素
    • paring_t 生成元所属的双线性对;可以通过在param子目录中与PBC捆绑的双线性对参数样本进行初始化
    • pbc_param_t 用于生成双线性对参数
    • pbc_cm_t 通过CM方法构造曲线的参数;有时需要pbc_param_t
    • field_t 群、环、域的代数结构,其内部使用pairing_t
    • 一些其他函数,比如说控制随机比特串的生成
  • 在一个给定数据类型上执行的函数,通常有相同的函数,例如设计element_t类型的函数前缀为element_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值