承诺

博客主要讲述了跟随李珊在微信上打卡学习,持续时间达400天。体现了坚持学习的过程。
  • 1、跟李珊学习在微信上打卡400天
  • 2、
### Pedersen 承诺方案 Pedersen承诺是一种加密原语,广泛应用于零知识证明和其他密码学协议中。该方案基于离散对数假设,在给定的循环群 \( G \) 中,选择两个生成元 \( g \) 和 \( h \),其中 \( h = g^a \mod p \)[^4]。 #### 方案描述 对于消息 \( m \in Z_p \) 及随机数 \( r \in Z_q \),计算承诺如下: \[ C(m,r) = g^m \cdot h^r \] 此过程确保了承诺的隐蔽性和绑定性特性。具体来说, - **隐蔽性**:即使攻击者知道 \( g \) 和 \( h \),也无法从承诺值推断出原始的消息 \( m \) 或随机数 \( r \)。 - **绑定性**:一旦做出承诺,则无法改变所提交的信息而不被发现;破坏这种性质相当于破解了离散对数难题。 此外,值得注意的是,Pedersen承诺具备加法同态属性: \[ Com_{ck}(m_0;r_0) \cdot Com_{ck}(m_1;r_1) = Com_{ck}(m_0 + m_1; r_0 + r_1) \] 这意味着可以安全地执行涉及多个秘密数值的操作而无需暴露这些数值本身。 ```python from random import randint import hashlib def generate_commitment(g, h, message, randomness): """Generates a Pedersen commitment.""" return pow(g, message, p) * pow(h, randomness, p) p = 23 # Example prime number for demonstration purposes only. g = 5 # Generator element within the group defined by modulus 'p'. h = pow(g, randint(1, p), p) # Another generator derived from 'g'. message = 7 # Message to commit to. randomness = 3 # Random blinding factor. commitment = generate_commitment(g, h, message, randomness) print(f"The generated commitment is {commitment}.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值