将“psi-client-server"demo改为.cpp
- 修改makefile文件,并修改文件后缀名。
- 去掉rceiver.cpp中的goto语句(对goto语句的理解参考c++爱好者必点:goto语句详解_c++ goto-CSDN博客),end标签之前的内容全部放去如下图的if的{}中,将必要的声明挪到{}外。
用CLion运行relic库中的demo——general-paillier
- 将“general-paillier”文件夹移动到想要的地方。
- 修改makefile文件中的RELIC_ROOT,并检查文件中所涉及的路径是否正确。
- 在CLion打开“general-paillier”文件夹,进行配置如下图。
常用的函数(仅记录本人使用过的)
1.哈希函数
hash表示哈希值,msg表示被哈希的消息,len表示被哈希的消息的长度。哈希值为160比特,数组长度为20。(本人调用md_map_b2s256时,对所有的输入,输出全部相同,如果有大佬知道原因,还请指点。)
hash表示哈希值,msg表示被哈希的消息,len表示被哈希的消息的长度。哈希值为256比特,数组长度为32。
bn_t类型相关的函数比较a与b是否相同,若相同则返回RLC_EQ
bn_size_bin:将a写入缓冲区需要的长度
bn_read_bin:从缓冲区buffer中读入a
bn_write_bin:将a写入缓冲区buffer
从字符串中读入a
bn_rand_mod:生成一个模b的随机数a
bn_print:输出一个bn_t类型的数a
令a = digit,digit的类型为size_t
令c = a,a和c的类型均为bn_t
c = a - b,b的类型时size_t
mod
,注意a要与b互质。
c表示a和b的最大公因数
c = a * b
mod
,输出结果c表示c(x)多项式的系数。
初始化g1_t,g2_t,gt_t类型
分配一个g1_t,g2_t,gt_t类型的元素
获得群的阶
打印输出
写入缓冲区,B表示缓冲区,L表示缓冲区大小,A表示代写入元素,C表示是否进行点压缩
计算多组标量乘法,并将所有积累加。R表示输出,P表示G2中元素向量,K表示数向量,N表示数组长度。
双线性映射,R = e(P,Q)