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 = gk mod pg^k \ mod \ pgk mod p。

  • 计算密文c2:计算c2 =m∗yk mod pm * y^k \ mod \ pm∗yk mod p。

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

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

  • 计算中间值:计算α=(c1x)−1 mod p\alpha = (c1^x)^{-1} \ mod \ pα=(c1x)−1 mod p,即计算α(gk)−x mod p\alpha (g^k)^{-x} \ mod \ pα(gk)−x mod p。
  • 解密消息:计算m=c2∗(c1x)−1 mod p=c2∗α mod pm = c2 * (c1^x)^{-1} \ mod \ p = c2 * \alpha \ mod \ pm=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(mod φ(N))d*e \equiv 1 (mod \ \varphi(N))d∗e≡1(mod φ(N)),d作为私钥指数。 公钥为(N, e),私钥为(N, d)。

2. 加密

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

3. 解密

  • 计算m=cd mod Nm = c^d \ mod \ Nm=cd mod N。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值