PBC库案例--BLS签名

本文档详细介绍了如何利用PBC库实现Boneh-Lynn-Shacham(BLS)签名方案,涉及素数组G1, G2, GT和双线性映射e。Alice的私钥为Zr的随机元素x,公钥为g^x,签名过程包括消息散列和幂运算。验证签名正确性的公式也在文中给出。" 19217,3276,理解OpenSSL中的BIO连接类型:BIO_s_connect,"['网络编程', 'openssl库', 'socket连接', 'IO模型']
摘要由CSDN通过智能技术生成
本人也做fabric 项目搭建、开发、浏览器、sdk、共识算法的测试、改进等工作、有问题或需要,可以加q 260261476,欢迎指导!

介绍

本章介绍了如何使用PBC库实现Boneh-Lynn-Shacham(BLS)签名方案。它基于文件 example / bls.c(见安装目录)。我们有三个素数为 r 的 G1,G2,GT 组,以及一个双线性映射 e,它从 G1 提取元素,从 G2 提取元素,并输出 GT 元素。我们将它们与系统参数 g 一起公布,系统参数 g 是 G2 的随机选择元素。Alice 希望对发送给 Bob 消息签名。她按如下方式生成她的公、私钥。她的私钥是 Zr 的随机元素 x,而她对应的公钥是 g^x。
当要签名消息时,Alice 将消息散列到 G1 的某个元素 h,然后输出签名 h^x。为了验证签名 σ,Bob 检查下面公式是否满足以验证签名的正确性。

e(h,g^x)= e(σ,g)
// Boneh-Lynn-Shacham short signatures demo.
//
// See the PBC_sig library for a practical implementation.
//
// Ben Lynn
#include "/usr/local/include/pbc/pbc.h"
#include "/usr/local/include/pbc/pbc_test.h"

int main(int argc, char **argv) {
   
  // 定义一个双线性对
  pairing_t pairing;
  // 定义一些参数
  element_t g, h;
  element_t public_key, sig;
  element_t secret_key;
  element_t temp1, temp2;
  // 实例化 paring
  pbc_demo_pairing_init(pairing, argc, argv);

  // 实例化 元素 属于 G1.G2,GT
  element_init_G2(g, pairing);
  element_init_G2(public_key, pairing);
  element_init_G1(h, pairing);
  element_init_G1(sig, pairing);
  element_init_GT(temp1, pairing);
  element_init_GT(temp2, pairing);
  // 实例化 元素 属于 Zr(表示以r为模的整数环。)  r是阶 (G1.G2,GT)
  element_init_Zr(secret_key, pairing);

  printf
  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值