Elgamal和RSA加密算法

ElGamal加密

ElGamal加密算法是一种基于离散对数问题的非对称加密算法,它的安全性建立在求解离散对数问题的困难性之上。

1. 密钥生成

  • 选择大素数p:选择一个足够大的素数p,作为有限域的基础。
  • 选择生成元g:选择一个整数g,使得g是模p乘法群Zp*的生成元。
  • 选择私钥x:随机选择一个整数x作为私钥,其中1 ≤ x ≤ p-1。
  • 计算公钥y:计算y = g^x mod p,并将y作为公钥公开。

2. 加密
假设Alice要向Bob发送一条消息m,Bob的公钥为(p, g, y)。

  • 随机选择整数k:Alice随机选择一个整数k,其中1 ≤ k ≤ p-1。

  • 计算密文c1:计算c1 = g k   m o d   p g^k \ mod \ p gk mod p

  • 计算密文c2:计算c2 = m ∗ y k   m o d   p m * y^k \ mod \ p myk mod p

  • 发送密文:Alice将密文(c1, c2)发送给Bob。

3. 解密
Bob收到密文(c1, c2)后,使用自己的私钥x进行解密。

  • 计算中间值:计算 α = ( c 1 x ) − 1   m o d   p \alpha = (c1^x)^{-1} \ mod \ p α=(c1x)1 mod p,即计算 α ( g k ) − x   m o d   p \alpha (g^k)^{-x} \ mod \ p α(gk)x mod p
  • 解密消息:计算 m = c 2 ∗ ( c 1 x ) − 1   m o d   p = c 2 ∗ α   m o d   p m = c2 * (c1^x)^{-1} \ mod \ p = c2 * \alpha \ mod \ p m=c2(c1x)1 mod p=c2α mod p

RSA加密

RSA算法的安全性是基于 大整数因数分解 的困难性。

1. 生成公钥和私钥:

  • 选择两个大素数p和q。 计算它们的乘积N = p * q。
  • 计算欧拉函数φ(N) = (p-1)(q-1)。
  • 选择一个与 φ ( N ) \varphi(N) φ(N)互质的整数e作为公钥指数。
  • 计算d,使得 d ∗ e ≡ 1 ( m o d   φ ( N ) ) d*e \equiv 1 (mod \ \varphi(N)) de1(mod φ(N)),d作为私钥指数。 公钥为(N, e),私钥为(N, d)。

2. 加密

  • 明文为m,密文为c。
  • 计算 c = m e   m o d   N c = m^e \ mod \ N c=me mod N

3. 解密

  • 计算 m = c d   m o d   N m = c^d \ mod \ N m=cd mod N
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值