简单RSA算法

RSA

最近在涅普科技的网课下学习了RSA。来总结一下。
在去了解RSA的前提下,我们需要一些数论基础。
mod是取余函数,a mod b表示a 对 b取余
同余:若 a,b为两个整数且它们的差能被某个自然数 n 所
整除则称 a 就模 n 来说同余于 b,或者说 a 和 b关于模 n 同余,也可以说a和b对n的余数是相同的。
可以记为a ≡ b(mod n)
模逆元:
模逆元也称为模倒数。
一整数A对同余 N之模逆元是指满足以下公式的整数 A^-1≡ B(mod n)
也可以为A*B ≡ 1 mod n
整数A对模数N之模逆元存在的充分必要条件是A和 N互素

欧拉函数:假设 a 和 m 都是整数,且 gcd(a, m) = 1 (a,m互素)则有
a^ φ(m) = 1 mod n

RSA加密的一些参数

1• 两个大的素数 p 和 q,以及它们的积 n,n 是加解密过程中的模数
2• 欧拉函数 φ(n)=(p-1)*(q-1)
3• 加密指数 e,和解密指数 d = invert(e, φ(n))
4• 密文 c,明文 m
通过攻防世界的easy RSA 举个例子
下载好,打开附件。
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d。
数据都给了,直接套公式就可以了。很轻松得到flag
在这里插入图片描述

RSA的加密和解密

当所有参数都给出来是,是非常简单的。
加密:c = m^e mod n
解密:m = c^d mod n
因为 d 是 e 对 φ(n) 的逆元,所以 e 和 d 在模 φ(n) 的运算下,互为倒数,所以e.d ≡ 1 mod Φ(n)
所以存在正整数 r 满足:e.d = 1 + r*Φ(n)
c^d ≡ m^e.d ≡ m^1+r. φ(n)≡ m ,m^r.φ(n) ≡ m.(m^φ(n))的r次方 ≡ m.1 ≡m mod n
(欧拉函数:假设 a 和 m 都是整数,且 gcd(a, m) = 1 (a,m互素)则有
a^ φ(m) = 1 mod n)

RSA工具

openssl,rsatool,RsaCtfTool,RSAtool
详细的在一位大佬的博客中有介绍
https://www.jianshu.com/p/c945b0f0de0a

简单RSA加密和解密算法

RSA是一种不对称算法(用来加密的公钥和解密的私钥是不一样的)
RSA加密
from Crypto.Util.number import*

m = 123456
e = 65537
p = getPrime(128)(生成一个 128bits 的随机素数。)
q = getPrime(128)
n = p*q
c = pow(m,e,n)(函数pow是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。)
print©

RSA解密
from Crypto.Util.number import*
p = ‘’
q = ‘’
e = ‘’
c = ‘’
d = inverse(e,(p-1)(q-1))
n = p
q
m = pow(c,d,n)

RSA相关攻击算法
分解素因数攻击

当我们截获一段密文时,我们只知道公钥e,和模数n,想要解密就需要d,
而d=invert(e, φ(n)),问题就变成了算φ(n),这时,我们就需要知道n的素因数分解。
n 的数值很大,RSA中常用的数量级往往不能通过枚举的方法(试除法)分解因数。
但是如果生成的素数是不安全的,有可能导致 n 很容易被分解。
所以我们尝试使用一些算法或工具来尝试分解 n。
https://www.alpertron.com.ar/ECM.HTM
http://www.factordb.com/index.php

已知 p+q 或 p-q时

或者是题目给了其他的p与q之间的关系,通过解方程组或推导来求出p和q。
p * q = n
p + q = a

已知e,d 分解 n

e.d = 1 (mod φ(n))
e.d = 1 + k. φ(n),k<e
穷举K,求出φ(n):φ(n) = (p-1)(q-1)
解一个二元二次组
p + q = n - φ(n)+1
p.q = n
未完待续

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值