逆向分析中的密码学---RSA

RSA是一种公钥加密算法,基于大素数相乘的数学难题。流程包括选取两个大素数p和q,计算n=pq,求欧拉函数φ(n),选择加密密钥e与φ(n)互素,计算d为e的逆元。公钥(e,n)用于加密,私钥(d)用于解密。攻击主要针对n的分解。常见e值为65537。
摘要由CSDN通过智能技术生成

0x01 简介

RSA算法是公钥加密算法,即可用于数据加密也可以用于数字签名。RSA基于一个简单的数论事实,两个大素数相乘十分容易,将其进行因式分解确实困难的。这篇文章不涉及RSA算法的原理,只涉及RSA算法的流程

0x02 算法流程

流程时挺简单的

  1. 选取两个大素数p和q,为了获得最高安全性,设两数长度一样
  2. 计算n=pq,n称为模
  3. 计算欧拉函数: φ \varphi φ(n)=(p-1)(q-1)
  4. 选取加密密钥e,其与 φ \varphi φ(n)互素。如果选择的e值合适,RSA加解密的速度会加快。e的常用值为3、17、和65537(2^16+1)
  5. 使用扩展欧几里德算法求出e模 φ \varphi φ(n)的逆元d。ed ≡ \equiv 1mod φ \varphi φ(n)
  6. 公钥为e和n,私钥为d,p和q可以丢弃,但是必须保密
  7. 加密消息m时,将其看成一个大整数,并把它分成比n小的数据分组,按 c i c_i ci = m i e m_i^e mie mod n
  8. 解密密文c时,取每个加密后的分组 c i c_i ci 并计算, m i m_i mi = c i d c_i^d cid mod n

0x03 RSA算法的攻击

RSA算法攻击主要还是集中在n的分解,当n位数不足时容易被分解出p,q从而算出密钥d。
常见攻击方式参考:https://www.anquanke.com/post/id/84632

0x04 总结

算法本身比较简单。具体实现得看用什么库实现。

参考:
《加密与解密》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值