1、 项目->属性->配置属性->调试->命令参数,任选 prama 文
件夹中的文件参数,比如a.param然后把 a.param 加入工
程文件夹里面
// .\PbcLib\param\a.param
2、 c/c++->常规->附加包含目录,添加include文件所在的
路径,同时增加$(ProjectDir)
// .\PbcLib\include;$(ProjectDir);
3、 预处理定义中加入:_CRT_SECURE_NO_WARNINGS
4、 点击连接器->常规->附件库目录,添加pbc.lib的路径
// .\PbcLib\lib;
5、 链接器->输入->附加依赖项
添加[libgcc.a;pbc.lib;libgmp.a;]
并把 libgcc.a,libgmp.a 两个文件添加进去
6、 注意dll文件和.exe文件在一个目录下
7、 属性->链接器->命令行将 /SAFESEH:NO 键入“附加选项”框中
#include <pbc.h>
#include <pbc_test.h>
#include <iostream>
int main(int argc, char *argv[]) {
int MAIN(int argc, char *argv[]);
pairing_t pairing;
pbc_demo_pairing_init(pairing, argc, argv);
if(!pairing_is_symmetric(pairing)) {
pbc_die("pairing must be symmetric");
}
return 0;
}
int MAIN(int argc, char *argv[]) {
#if 0
printf("%d\n", argc);
for(int i = 0; i < argc; i++) {
printf("%s\n", argv[i]);
}
#endif
pairing_t pairing;
pbc_demo_pairing_init(pairing, argc, argv);
if(!pairing_is_symmetric(pairing)) {
pbc_die("pairing must be symmetric");
}
element_t P, Ppub, x, S, H, t1, t2, t3, t4;
element_init_Zr(x, pairing);
element_init_Zr(H, pairing);
element_init_Zr(t1, pairing);
element_init_G1(S, pairing);
element_init_G1(P, pairing);
element_init_G1(Ppub, pairing);
element_init_G1(t2, pairing);
element_init_GT(t3, pairing);
element_init_GT(t4, pairing);
printf("ZSS short signature schema\n");
printf("KEYGEN\n");
element_random(x);
element_random(P);
element_mul_zn(Ppub, P, x);
element_printf("P = %B\n", P);
element_printf("x = %B\n", x);
element_printf("Ppub = %B\n", Ppub);
printf("SIGN\n");
char ss1[20] = "Message";
element_from_hash(H, ss1, 7);
element_add(t1, H, x);
element_invert(t1, t1);
element_mul_zn(S, P, t1);
printf("Signature of message \"Message\" is:\n");
element_printf("S = %B\n", S);
printf("VERIFY\n");
element_from_hash(H, ss1, 7);
element_mul_zn(t2, P, H);
element_add(t2, t2, Ppub);
element_pairing(t3, t2, S);
element_pairing(t4, P, P);
element_printf("e(H(m)P + Ppub, S) = %B\n", t3);
element_printf("e(P, P) = %B\n", t4);
if(!element_cmp(t3, t4)) printf("Signature is valid\n");
else printf("Signature is invalid\n");
element_clear(P);
element_clear(Ppub);
element_clear(x);
element_clear(S);
element_clear(H);
element_clear(t1);
element_clear(t2);
element_clear(t3);
element_clear(t4);
pairing_clear(pairing);
printf("Have a good day!\n");
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
c++语言密码学Pbc库,博主亲测有效
共53个文件
h:35个
param:12个
dll:2个
需积分: 48 17 下载量 34 浏览量
2022-06-14
20:35:46
上传
评论 2
收藏 2.58MB RAR 举报
温馨提示
c++语言密码学Pbc库,是一个基于双线性对的密码学库,这库在公钥密码学中使用非常广泛,里面附带该库在vs2019的安装方法,本资源博主亲测有效。
资源详情
资源评论
资源推荐
收起资源包目录
PbcLib.rar (53个子文件)
pbc.dll 486KB
如何调通程序.txt 3KB
PbcLib
include
pbc_pairing.h 9KB
pbc_a1_param.h 907B
pbc.h 630B
pbc_curve.h 3KB
pbc_parse.h 491B
pbc_singular.h 266B
pbc_time.h 101B
pbc_assert.h 472B
pbc_fops.h 327B
pbc_param.h 1KB
pbc_fieldmpz.h 207B
pbc_random.h 787B
pbc_darray.h 2KB
pbc_tracker.h 286B
pbc_hilbert.h 366B
pbc_fp.h 798B
pbc_utils.h 2KB
pbc_ternary_extension_field.h 738B
pbc_d_param.h 2KB
pbc_mnt.h 1KB
pbc_i_param.h 665B
pbc_symtab.h 880B
pbc_field.h 19KB
gmp.h 77KB
pbc_test.h 1KB
pbc_mpc.h 2KB
pbc_f_param.h 925B
pbc_a_param.h 806B
pbc_fieldquadratic.h 729B
pbc_g_param.h 899B
pbc_e_param.h 1KB
pbc_memory.h 717B
pbc_poly.h 2KB
pbc_z.h 195B
pbc_multiz.h 451B
param
a.param 359B
g149.param 1KB
f.param 324B
d201.param 1KB
d159.param 979B
a1.param 640B
d277699-175-167.param 1KB
e.param 1KB
d278027-190-181.param 1KB
i.param 71B
d105171-196-185.param 1KB
d224.param 1KB
lib
libgcc.a 6.41MB
pbc.lib 251KB
pbc.dll 486KB
libgmp.a 941KB
共 53 条
- 1
梓丶城
- 粉丝: 33
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0