PBC库系列(一)

PBC库

PBC(Pairing-Based Cryptography Library) 是实现双线性对运算的函数库 . 这个开源代码 C 函数库是由Stanford 大学开发 , 库的地址为 http://crypto.stanford.edu/pbc/

安装过程在前面的文档

ubuntu安装过程:https://blog.csdn.net/TBBetter/article/details/103587977

手册

	PBC:https://crypto.stanford.edu/pbc/manual/
	GMP:https://gmplib.org/manual/Concept-Index.html#Concept-Index

基础

1.	使用PBC库的程序应包含文件pbc.h:
		#include <pbc.h>
		
2.	执行代码要链接到PBC库和GMP库,例如:
		$ gcc program.c -L. -lpbc -lgmp

3. 	pbc.h 已经包含 gmp.h
 
4. PBC在几个方面遵循GMP:
		4.1	输出参数通常在输入参数之前。
		4.2 	变量可以被一条命令的输入、输出同时使用
		4.3	在使用变量之前,必须将其初始化一次。当不再需要时,必须清除它。为了提高效率,应避免不必要的初始化和清除。
		4.4	以_t结尾的PBC变量在函数调用中的行为与GMP变量相同:有效地作为调用引用。换句话说,就像在GMP中一样,如果一个函数修改了输入变量,则当控制返回返回给调用者时,该变量将保持修改状态。
		4.5	与GMP一样,变量会在需要时自动分配内存。默认情况下,调用malloc()和friends,但是可以更改。
		4.6	PBC功能大部分是可重入的。

5.	由于PBC库基于GMP构建,因此可以使用GMP类型。PBC类型类似于GMP类型。以下示例摘自GMP手册中的示例,并说明了如何声明PBC数据类型element_t。
		element_t sum;
		struct foo { element_t x, y; };
		element_t vec[20];

6.	GMP具有用于整数的mpz_t类型,用于有理数的mpq_t等。
		相反,PBC将element_t数据类型用于不同代数结构的元素,例如椭圆曲线组,多项式环和有限域。
		函数假定其输入来自适当的代数结构。

7.	PBC数据类型和功能可以分类如下。(仅前两个足以满足一系列应用)
		element_t			:代数结构的元素。
		pairing_t				:配对(包含一系列元素);可以根据param子目录中与PBC捆绑在一起的配对参数进行初始化。
		pbc_param_t	:用于生成配对参数。
		pbc_cm_t			:通过CM方法构造曲线的参数;有时是pbc_param_t需要的。
		field_t					:代数结构:群,环和场;由pairing_t内部使用。
		还有一些其他功能,例如控制如何生成随机位的功能。在给定数据类型上运行的函数通常具有相同的前缀,例如那些涉及element_t对象的对象以element_开头。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章