JPBC库应用之BLS签名
JPBC库应用之BLS签名
视频地址 https://www.bilibili.com/video/BV1jA41147vt/
BLS签名简单介绍
Initialization
- 生成pairing参数 <G1,GT,Zr,g,eG_1, G_T, Z_r, g, eG1,GT,Zr,g,e>
- 选取随机数 x∈Zrx \in Z_rx∈Zr 作为私钥
- 计算对应的公钥 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签名相关推荐
- JPBC库的使用实例——BLS签名
这里展示了一个简单的对JPBC库的调用的实例. 可以参考JPBC库的官方文档进行学习: http://gas.dia.unisa.it/projects/jpbc/docs/ecpg.html#Typ ...
- JPBC库实现基于身份的签名体制
JPBC库实现基于身份的签名体制---Hess体制 Hess算法: 代码: Hess类: import it.unisa.dia.gas.jpbc.Element; import it.unisa.d ...
- JPBC库只使用椭圆曲线群,不使用双线性性质。找单位元,逆元等
JPBC库是一个功能很强大的数学库,用于生成椭圆曲线,双线性等,但网上参考资料很少,重复度极高,该分栏用于安装,JPBC参数解释,生成椭圆曲线群,整数群(不用双线性性质),双线性映射教学.内容原创,禁 ...
- Windows下JPBC库的使用
在windows 10系统下,JPBC库的导入过程简介: 1.首先去JPBC官网下载库压缩包: 附上网址:JPBC - Java Pairing-Based Cryptography Library ...
- 史上最全的Schnorr签名方案和BLS签名方案的全面对比
前言 Schnorr 签名算法最初是由德国密码学家 Claus Schnorr 于 2008 年提出的,而来自区块链协议公司 Blockstream 的密码学家 Gregory Maxwell.Pie ...
- BLS 签名和基于 BLS 签名的门限签名
在区块链的整个体系中大量使用了密码学算法,密码学是保证区块链安全的基石,而区块链的广泛应用也推进了密码学的发展.2003 年 Boneh 和 Franklin 提出了身份基加密,从此基于双线性映射的密 ...
- BLS 签名实现阈值签名的流程
[原创说明] BLS签名在英文文档介绍的比较多,但是很多讲得并不清楚,通常需要查看原有的论文,对应后学习,对一般的程序员要求比较高.这里整理了一下本人在学习bls签名过程中的详细推导过程,自认为比较容 ...
- JPBC库(基于配对的密码学)入门和避坑指南
视频地址:https://www.bilibili.com/video/BV1o5411Y77r/ 1. JPBC简介 Java Pairing-Based Cryptography Library ...
- JPBC库应用之身份基加密IBE
身份基加密 (Identity based Encryption)算法 视频地址 https://www.bilibili.com/video/BV1Rq4y117Zw?share_source=co ...
最新文章
- 介绍html CSS和JS的定义或引用
- go python php 压力测试_pyLot 基于python的压力测试工具
- LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
- kotlin学习笔记——单元测试
- 乘积的C语言,c语言矩阵相乘
- min—width的使用
- 接收list参数_Python 犄角旮旯--List
- .Net下RabbitMQ的使用(4) -- 订阅和发布
- The evolved Transformer,进化的变换器
- 火狐浏览器设置cookie失败_如何启用火狐浏览器的Cookie功能 这些经验不可多得...
- 360插件化方案RePlugin学习笔记-插件与宿主间的通信方式
- 牛客练习赛50 F.tokitsukaze and Another Protoss and Zerg(分治+NTT)(模板题)
- Codeforces 1155F Delivery Oligopoly dp(看题解)
- iOS拍照和录制视频 摄像头使用
- Android 多窗口适配
- 【Unity3d日常开发】Unity3D中实现热力图、风向图、温度图效果
- 一个数如果恰好等于它的因子(因子:即能够整除的数)之和,这个数就称为“完数”。 例如 6=1+2+3 28=1+2+4+7+14 编程找出10000以内的所有完数。
- IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
- 哪个计算机软件可以探究小孔成像,探究小孔成像
- 有没有测试游戏天赋的软件,测测你的电竞天赋-测测你的电竞天赋有多高小游戏v1.0...