JPBC库应用之BLS签名

视频地址 https://www.bilibili.com/video/BV1jA41147vt/

BLS签名简单介绍

Initialization

  1. 生成pairing参数 <G1,GT,Zr,g,eG_1, G_T, Z_r, g, eG1​,GT​,Zr​,g,e>
  2. 选取随机数 x∈Zrx \in Z_rx∈Zr​ 作为私钥
  3. 计算对应的公钥 gxg^xgx

Singing

签名者拥有的数据包括消息 mmm,私钥 xxx,以及公开的pairing参数

签名者将消息 mmm 的哈希值(哈希算法可以自定义,签名者和验证者一致)映射为一个 G1G_1G1​ 上的群元素 hhh,并利用私钥计算签名 σ=hx\sigma = h^xσ=hx

Verifying

验证者拥有的数据包括 m,σ,gxm, \sigma, g^xm,σ,gx,以及公开的pairing参数

验证者利用公钥验证签名如下

e(σ,g)=?e(h,gx)e(\sigma, g) \overset{?}{=} e(h, g^x)e(σ,g)=?e(h,gx) 即 e(hx,g)=?e(h,gx)e(h^x, g)\overset{?}{=}e(h, g^x)e(hx,g)=?e(h,gx)

BLS签名算法实现

import it.unisa.dia.gas.jpbc.Element;
import it.unisa.dia.gas.jpbc.Field;
import it.unisa.dia.gas.jpbc.Pairing;
import it.unisa.dia.gas.plaf.jpbc.pairing.PairingFactory;public class BLS {public static void main(String[] args){// InitializationPairing bp = PairingFactory.getPairing("a.properties");Field G1 = bp.getG1();Field Zr = bp.getZr();Element g = G1.newRandomElement();Element x = Zr.newRandomElement();Element g_x = g.duplicate().powZn(x);//SigningString m = "message";byte[] m_hash = Integer.toString(m.hashCode()).getBytes();Element h = G1.newElementFromHash(m_hash, 0, m_hash.length);Element sig = h.duplicate().powZn(x);//VerificationElement pl = bp.pairing(g, sig);Element pr = bp.pairing(h, g_x);if (pl.isEqual(pr))System.out.println("Yes");elseSystem.out.println("No");}
}

JPBC库应用之BLS签名相关推荐

  1. JPBC库的使用实例——BLS签名

    这里展示了一个简单的对JPBC库的调用的实例. 可以参考JPBC库的官方文档进行学习: http://gas.dia.unisa.it/projects/jpbc/docs/ecpg.html#Typ ...

  2. JPBC库实现基于身份的签名体制

    JPBC库实现基于身份的签名体制---Hess体制 Hess算法: 代码: Hess类: import it.unisa.dia.gas.jpbc.Element; import it.unisa.d ...

  3. JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等

    JPBC库是一个功能很强大的数学库,用于生成椭圆曲线,双线性等,但网上参考资料很少,重复度极高,该分栏用于安装,JPBC参数解释,生成椭圆曲线群,整数群(不用双线性性质),双线性映射教学.内容原创,禁 ...

  4. Windows下JPBC库的使用

    在windows 10系统下,JPBC库的导入过程简介: 1.首先去JPBC官网下载库压缩包: 附上网址:JPBC - Java Pairing-Based Cryptography Library ...

  5. 史上最全的Schnorr签名方案和BLS签名方案的全面对比

    前言 Schnorr 签名算法最初是由德国密码学家 Claus Schnorr 于 2008 年提出的,而来自区块链协议公司 Blockstream 的密码学家 Gregory Maxwell.Pie ...

  6. BLS 签名和基于 BLS 签名的门限签名

    在区块链的整个体系中大量使用了密码学算法,密码学是保证区块链安全的基石,而区块链的广泛应用也推进了密码学的发展.2003 年 Boneh 和 Franklin 提出了身份基加密,从此基于双线性映射的密 ...

  7. BLS 签名实现阈值签名的流程

    [原创说明] BLS签名在英文文档介绍的比较多,但是很多讲得并不清楚,通常需要查看原有的论文,对应后学习,对一般的程序员要求比较高.这里整理了一下本人在学习bls签名过程中的详细推导过程,自认为比较容 ...

  8. JPBC库(基于配对的密码学)入门和避坑指南

    视频地址:https://www.bilibili.com/video/BV1o5411Y77r/ 1. JPBC简介 Java Pairing-Based Cryptography Library ...

  9. JPBC库应用之身份基加密IBE

    身份基加密 (Identity based Encryption)算法 视频地址 https://www.bilibili.com/video/BV1Rq4y117Zw?share_source=co ...

最新文章

  1. 介绍html CSS和JS的定义或引用
  2. go python php 压力测试_pyLot 基于python的压力测试工具
  3. LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
  4. kotlin学习笔记——单元测试
  5. 乘积的C语言,c语言矩阵相乘
  6. min—width的使用
  7. 接收list参数_Python 犄角旮旯--List
  8. .Net下RabbitMQ的使用(4) -- 订阅和发布
  9. The evolved Transformer,进化的变换器
  10. 火狐浏览器设置cookie失败_如何启用火狐浏览器的Cookie功能 这些经验不可多得...
  11. 360插件化方案RePlugin学习笔记-插件与宿主间的通信方式
  12. 牛客练习赛50 F.tokitsukaze and Another Protoss and Zerg(分治+NTT)(模板题)
  13. Codeforces 1155F Delivery Oligopoly dp(看题解)
  14. iOS拍照和录制视频 摄像头使用
  15. Android 多窗口适配
  16. 【Unity3d日常开发】Unity3D中实现热力图、风向图、温度图效果
  17. 一个数如果恰好等于它的因子(因子:即能够整除的数)之和,这个数就称为“完数”。 例如 6=1+2+3 28=1+2+4+7+14 编程找出10000以内的所有完数。
  18. IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
  19. 哪个计算机软件可以探究小孔成像,探究小孔成像
  20. 有没有测试游戏天赋的软件,测测你的电竞天赋-测测你的电竞天赋有多高小游戏v1.0...

热门文章

  1. 外包,你是外包不是正式员工,麻烦不要随便吃公司零食
  2. sqlserver获取周数
  3. iOS 启动优化和安装包瘦身
  4. Kaggle文本可读性识别大赛银牌方案复盘
  5. 微信公众号信息推送实现业务解耦
  6. 随机抽样的python实现
  7. 诸如(1234568) 0xFF这类
  8. 播放量破4亿。《梦华录》创2022年国产剧豆瓣最高开分,它凭何爆火?
  9. 解决Could not build wheels for pikepdf which use PEP 517 and cannot be installed directly
  10. 正弦余弦编码器与增量编码器的区别