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

你可能感兴趣的:(加密)