Paillier同态加密算法

Paillier 公钥加密,是基于复合剩余类的困难问题。
判定合数剩余类问题是指 N= p * q,其中p和q都是大素数,任意给定 y ∈ Z N 2 ∗ y∈Z_{N^2}^* yZN2,使得 z = y N m o d N 2 z=y^N mod N^2 z=yNmodN2,判定z是模 N 2 N^2 N2的N次剩余还是非剩余是困难的。

与Paillier加密相关数学基础,例如gcd,lcm,二次剩余等理论可以查看我之前写的几篇博客https://blog.csdn.net/sLiubala/article/details/105914838
https://blog.csdn.net/sLiubala/article/details/105906999

Paillier加密算法是一种同态加密,满足加法和数乘同态

paillier加密算法步骤:密钥生成、加密、解密

  1. 密钥生成
    1.1 随机选择两个大质数p和q满足gcd(pq,(p-1)(q-1)) =1。这个属性保证两个质数长度相等。
    1.2 计算n=pq和λ=lcm(p-1,q-1)
    1.3 选择随机整数g( g ∈ Z n 2 ∗ g∈Z_{n^2}^* gZn2),使得满足n整除g的阶。
    1.4 公钥为(N,g)
    1.5 私钥为λ
    g c d ( L ( g λ m o d n 2 ) , n ) = 1 gcd(L(g^λ mod n^2),n)=1 gcd(L(gλmodn2),n)=1
  2. 加密
    2.1 选择随机数 r ∈ Z n r∈Z_n rZn
    2.2 计算密文
    c = E ( m , r ) = g m r n m o d n 2 , r ∈ Z n c = E(m,r) = g^m r^n mod n^2 ,r∈Z_n c=E(m,r)=gmrnmodn2,rZn,其中m为加密信息。
  3. 解密
    m = D ( c , λ ) = ( L ( c λ m o d n 2 ) / L ( g λ m o d n 2 ) ) m o d n , 其 中 L ( u ) = u − 1 / N m= D(c,λ)=(L(c^λ mod n^2)/L(g^λ mod n^2)) mod n,其中 L(u)=u-1/N m=D(c,λ)=(L(cλmodn2)/L(gλmodn2))modn,L(u)=u1/N
  • 9
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值