admin管理员组文章数量:1610684
Perdersen加密 Hyperledger实现
- Perdersen承诺
- 代码实现
Perdersen承诺
Pedersen 承诺是一个满足完美隐藏、计算绑定的同态承诺协议,其完美隐藏性不依 赖与任何困难性假设,计算绑定依赖于离散对数假设(DLA),其构造分为 3 个阶段:
- 初始化阶段 setup:选择阶为大素数 q 的乘法群 G、生成元,G=
=,公开元祖 (g,h,q); - 承诺阶段 commit:承诺方选择随机数 r 作为盲因子,计算承诺值,然后发送 comm 给 接收者;
- 打开阶段 open:承诺方发送(v,r)给接收者,接收者验证 comm 是否等于 , 如果相等则接受,否则拒绝承诺。
代码实现
/**
* Setup
* @param ctx context, String security
* generate params
*/
@Transaction(name = "Setup", intent = Transaction.TYPE.SUBMIT)
public void Setup(final Context ctx, final String security) {
ChaincodeStub stub = ctx.getStub();
int securityInt = Integer.parseInt(security);
//生成p,q需要满足大质数性质
BigInteger p = BigInteger.probablePrime(2 * securityInt, new Random());
BigInteger q = p.multiply(BigInteger.valueOf(2)).add(BigInteger.valueOf(1));
//生成g,h只需要在1到q-1的范围内
Random random = new Random();
BigInteger g = new BigInteger(String.valueOf(random.nextInt(q.intValue()) + 1)) ;
BigInteger s = new BigInteger(String.valueOf(random.nextInt(q.intValue()) + 1)) ;
//根据相应关系计算h
BigInteger h = g.modPow(s,q);
//put参数
stub.putStringState("q", String.valueOf(p));
stub.putStringState("g", String.valueOf(g
本文标签: PerdersenHyperledgerJava
版权声明:本文标题:Perdersen加密 Hyperledger实现(java) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726704185a1081469.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论