asc量子计算机,[推荐][原创]CTF-RSA常见题型、思路及解法

RSA入门:

写在前面:

这篇文章是帮助对RSA不熟悉的朋友且需要较为快速、深入的了解RSA而写的

不涉及非常晦涩难懂的数学知识和算法(不过最简单的原理说明还是有的)

攻击方法也是最容易遇到的(RSA的进阶篇除外)

并且所有的例题都是比较新的,甚至还有刚刚结束的比赛的题目

基本原理:

公钥与私钥的产生:

(1)进行加密之前,首先找出2个不同的大质数p和q

(2)计算n=p*q

(3)根据欧拉函数,求得φ(n)=φ(p)φ(q)=(p−1)(q−1)

(4)找出一个公钥e,e要满足: 1

(5)根据e*d除以φ(n)余数为1,找到私钥d。

(6)所以,公钥就是(n,e) 私钥就是(n,d)

消息加密:

m^e除以n求余数即为c(密文)

消息解密:

c^d除以n求余数即为m(明文)

关于基本原理的一些说明:

算法原理:

RSA公开密钥密码体制的原理是:

根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥

模运算规则:

模运算与基本四则运算有些相似,但是除法例外。其规则如下:

(a + b) % p = (a % p + b % p) % p

(a - b) % p = (a % p - b % p) % p

(a * b) % p = (a % p * b % p) % p

(a ^ b) % p = ((a % p)^b) % p

结合律:

((a+b) % p + c) % p = (a + (b+c) % p) % p (5)

((a*b) % p * c)% p = (a *(b*c)%p) % p (6)

交换律:

(a + b) % p = (b+a) % p

(a * b) % p = (b * a) % p

分配律:

((a +b)% p * c) % p = ((a * c) %p + (b * c) % p) % p

重要定理:

若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p)

若a≡b (% p),则对于任意的正整数c,都有(a * c) ≡ (b * c) (%p)

若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),

(a * c) ≡ (b * d) (%p)

欧拉函数:

定义:

在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)

例如φ(8)= 4,因为1,3,5,7均和8互质

特殊性质:p^k型欧拉函数:

若N是质数p的k次幂(即N=p^k),φ(n)=p^k-p^(k-1)=(p-1)p^(k-1)。

mn型欧拉函数(联想rsa算法的p和q)

设n为正整数,以φ(n)表示不超过n且与n互素的正整数的个数,称为n的欧拉函数值。

若m,n互质,φ(mn)=(m-1)(n-1)=φ(m)φ(n)。

基础知识的练习:

buuctf-RSA:

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17

求解出d作为flag提交

buuctf-rsarsa:

题目:

解题:

倒数第二行的gmpy2.powmod也可以用pow函数替代,不过前者比后者的计算速度快很多,之后有道题可以体现出来

RSA的基础攻击方式:

自此

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值