2022年pbc_library实现的bls签名源码分析 .pdf

上传人:Che****ry 文档编号:27266517 上传时间:2022-07-23 格式:PDF 页数:5 大小:37.38KB
返回 下载 相关 举报
2022年pbc_library实现的bls签名源码分析 .pdf_第1页
第1页 / 共5页
2022年pbc_library实现的bls签名源码分析 .pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《2022年pbc_library实现的bls签名源码分析 .pdf》由会员分享,可在线阅读,更多相关《2022年pbc_library实现的bls签名源码分析 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、bls 签名方案( A 签名, B 验证) :A: 生成一个随机数 x 作为私钥,生成随机的群生成元g,公钥 y=gx;被签名的消息 m,计算 m 的哈希值 h:h=hash (m) ;对 h 进行签名: sig=hx; B: B 收到的签名消息为sig; 验证双线性映射 e(sig,g)与 e(h,y)是否相等;其中 e(h,y)=e(h,gx)=e(h,g)x; 若 e(sig,g)=e(sig,g)=e(hx,g)=e(h,g)x=e(h,y),则说明 B 收到的签名是 A 的真实签名; */ #include #include int main(int argc, char *argv

2、) /定义需要用到的变量;pairing_t pairing; element_t g, h; element_t public_key, sig; element_t secret_key; element_t temp1, temp2; /初始化群 G1,G2,GT;pbc_demo_pairing_init(pairing, argc, argv); element_init_G2(g, pairing); element_init_G2(public_key, pairing); element_init_G1(h, pairing); element_init_G1(sig, pai

3、ring); element_init_GT(temp1, pairing); element_init_GT(temp2, pairing); element_init_Zr(secret_key, pairing); printf(Short signature testn); /generate system parameters element_random(g); /生成一个随机数作为生成元element_printf(system parameter g = %Bn, g); /generate private key element_random(secret_key); /生成

4、一个随机数作为私钥名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - element_printf(private key = %Bn, secret_key); /compute corresponding public key element_pow_zn(public_key, g, secret_key); /计算公钥 =g(私钥);element_printf(public key = %Bn, public_key);

5、/generate element from a hash /for toy pairings, should check that pairing(g, h) != 1 element_from_hash(h, hashofmessage, 13); /计算消息的 hash值element_printf(message hash = %Bn, h); /hsecret_key is the signature /in real life: only output the first coordinate element_pow_zn(sig, h, secret_key); /对消息哈希值

6、h 签名 sig=h(私钥);element_printf(signature = %Bn, sig); int n = pairing_length_in_bytes_compressed_G1(pairing); /int n = element_length_in_bytes_compressed(sig); int i; unsigned char *data = pbc_malloc(n); element_to_bytes_compressed(data, sig); printf(compressed = ); for (i = 0; i n; i+) printf(%02X,

7、datai); printf(n); element_from_bytes_compressed(sig, data); element_printf(decompressed = %Bn, sig); pbc_free(data); /verification part 1 element_pairing(temp1, sig, g); /计算双线性映射temp1=e(h(私钥 ),g); element_printf(f(sig, g) = %Bn, temp1); /verification part 2 /should match above element_pairing(temp2

8、, h, public_key); /计算双线性映射temp2=e(h,g(私钥); element_printf(f(message hash, public_key) = %Bn, temp2); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - if (!element_cmp(temp1, temp2) /如果 temp1=temp2,则说明私钥和公钥是配对的,签名验证通过,如果不相等,则公私钥不配对,签名验证失败prin

9、tf(signature verifiesn); else printf(*BUG* signature does not verify *BUG*n); int n = pairing_length_in_bytes_x_only_G1(pairing); /int n = element_length_in_bytes_x_only(sig); int i; unsigned char *data = pbc_malloc(n); element_to_bytes_x_only(data, sig); printf(x-coord = ); for (i = 0; i GT = out-f

10、ield, pairing output mismatch); PBC_ASSERT(pairing-G1 = in1-field, pairing 1st input mismatch); PBC_ASSERT(pairing-G2 = in2-field, pairing 2nd input mismatch); if (element_is0(in1) element_set0(out); return; if (element_is0(in2) element_set0(out); return; / TODO: out is an element of a multiplicativ

11、e subgroup, but the / pairing routine expects it to be an element of the full group, hence / the out-data. I should make this clearer. pairing-map(element_ptr) out-data, in1, in2, pairing); /*manual pairing_apply Computes a pairing: out = e(in1, in2), where in1, in2, out must be in the groups G1, G2

12、, GT. */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - /计算双线性映射 out=e(in1,in2) ;static inline void element_pairing(element_t out, element_t in1, element_t in2) pairing_ptr pairing = out-field-pairing; PBC_ASSERT(pairing != NULL, pairing output mismatch); pairing_apply(out, in1, in2, pairing); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁