Paillier密码

Paillier密码

原文章:密码学学习笔记 之 paillier cryptosystem - 安全客,安全资讯平台 (anquanke.com)

本文只摘取了主要公式及选值要求,原文中还有加密解密公式的证明过程

两种类型

正常类型

  • 随机选取两个大素数 p , q p,q p,q满足 g c d ( p ∗ q , ( p − 1 ) ∗ ( q − 1 ) ) gcd(p*q,(p-1)*(q-1)) gcd(pq,(p1)(q1))
  • n = p ∗ q n = p*q n=pq
  • λ = l c m [ p − 1 , q − 1 ] = ( p − 1 ) ∗ ( q − 1 ) / g c d ( p − 1 , q − 1 ) \lambda =lcm[p-1,q-1]=(p-1)*(q-1)/gcd(p-1,q-1) λ=lcm[p1,q1]=(p1)(q1)/gcd(p1,q1)
  • 选取随机整数 g , 0 < g < n 2 g,0<g<n^2 g,0<g<n2
  • 定义 L ( x ) = ( x − 1 ) / n L(x)= (x-1)/n L(x)=(x1)/n
  • μ = ( L ( g λ   m o d   n 2 ) ) − 1 ( m o d   n ) \mu =(L(g^{\lambda}~mod~n^2))^{-1}(mod~n) μ=(L(gλ mod n2))1(mod n)
  • 公钥 ( n , g ) (n,g) (n,g)
  • 私钥 ( λ , μ ) (\lambda,\mu) (λ,μ)

与变种相比较,其特征是 g g g 0 0 0 n 2 n^2 n2得随机数

加密过程

m m m为明文,需要 0 ≤ m < n 0\leq m < n 0m<n

随机 r r r,保证 g c d ( r , n ) = 1 gcd(r,n)=1 gcd(r,n)=1

密文 c ≡ g m ∗ r n ( m o d   n 2 ) c\equiv g^m*r^n(mod~n^2) cgmrn(mod n2)

解密过程

m ≡ L ( c λ   %   n 2 ) ∗ μ ( m o d   n ) m \equiv L(c^\lambda~\%~n^2)*\mu(mod~n) mL(cλ % n2)μ(mod n)

或者可以这样写(百度百科是这样的,但实际上是一致的)

m = L ( c λ   ( m o d   n 2 ) ) L ( g λ   ( m o d   n 2 ) ) ( m o d   n ) m = \frac{L(c^\lambda~(mod~n^2))}{L(g^\lambda~(mod~n^2))}(mod~n) m=L(gλ (mod n2))L(cλ (mod n2))(mod n)

变种

  • g = n + 1 g=n+1 g=n+1
  • λ = ϕ ( n ) = ( p − 1 ) ∗ ( q − 1 ) \lambda=\phi(n)=(p-1)*(q-1) λ=ϕ(n)=(p1)(q1)
  • μ = ϕ ( n ) − 1 ( m o d   n ) \mu=\phi(n)^{-1}(mod~n) μ=ϕ(n)1(mod n)
  • 其余参数与正常类型一致

特征: g g g不是取随机数,而是 g = n + 1 g = n+1 g=n+1

其加密解密过程与正常类型一致

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值