常用函数解析
先总结下常用函数,更多函数介绍,请移步参考资料中的使用手册。
|
|
重点及易错点
函数的输出参数通常在输入参数之前
注意乘法运算的顺序,不能改变
同一个变量在一次函数调用中既可以作输入也可以作输出。例如求逆函数
element_invert(t,t)->t=1/t
变量使用前必须初始化,当不再使用时,必须释放资源。使用
element_clean()
或pairing_clean()
函数整数环中元素之间运算,结果还是整数环变量,整数环元素与群运算,结果为群变量。有点拗口,举个例子
1234567891011121314element_t s,a,y,p,p_pub;//声明变量element_init_Zr(s);//初始化为zr中元素element_init_Zr(a);element_init_Zr(y);element_init_G1(p);//初始化为群G1上的元素init_init_G1(p_pub);element_random(s);//选取随机数element_random(a);element_random(p);element_mul_zn(p_pub,p,s);//p_pub=s*p,注意参数位置,不能颠倒element_mul_zn(y,a,s);//y=s*a例子中a,s,y为整数环 $Zr$ 中的元素,p为群上元素。$p{pub}=sp$ , $p_{pub}$ 也为群上元素。$y=sa$ , y为整数环 $Z_r$ 中的元素。群上元素其实就是椭圆曲线坐标,可以把整数环中元素当成整数,群上元素看成坐标,这样很容易就理解了。
获取系统当前时间可以使用两个函数,
get_time()
在 VC++ 6.0 中使用,Visual Studio 2012使用pbc_get_time()
. 关于Visual Studio 2012的配置,参考我以前博客 win10下使用MINGW编译PBC库 如果使用cpp,可能会出现链接错误。因为有些库函数是用c语法编写,所以要更改部分函数,具体见 error LNK2019: 无法解析的外部符号之分析在获取程序运行时间时,库给出的函数总是不精确,找了很长时间也没找到原因。最终利用for循环运行500次,求平均,最终算是得到较为稳定的时间差。