攻防世界:Crypto习题之easy_RSA

RSA 加密

在非对称加密算法中,单向函数被广泛应用,用于确保从公钥加密后的密文无法轻易推导出私钥,从而保证数据的安全性。而其中最著名的算法便是 RSA 加密算法。

首先设 $$\varphi(m) := | { 1 \leq k \leq m |\gcd(k, m) = 1 } |$$ 为欧拉函数(Euler'sche Phi-function)。

RSA加密算法的流程如下:

  1. 选择2个很大的质数\(p, q\).
  2. 计算\(n:=pq\)。这里的n是公开的,\(p, q\)则是保密的。
  3. 计算\(\varphi(n)\)。(因为我们知道\(n=pq\),且\(p, q\)均为质数,我们可以利用公式\(\varphi(n)=(p-1)(q-1)\)进行快速计算。)
  4. 选择\(e \in \{1,2,...,\varphi(n)-1\}\),使得\(gcd(\varphi(n),e)=1\).

    我们的公钥为\((e,n)\)。
  5. 计算密钥\(d\),满足\(ed \equiv 1\) mod \(\varphi(n)\).

假设我们现在有明文x以及公钥\((e,n)\),进行加密时只需要计算

\[b=a^e \text{ mod } n, \ \ \ \ a,b \in \mathbb{Z}_n.
\]

而解密时同理

\[a=b^d \text{ mod } n.
\]

如此一来,任何人都可以将一段信息加密后发送给我们,而只有我们能够解密这段信息。

题目内容

https://adworld.xctf.org.cn/challenges/list



思路

在进行第5步计算密钥\(d\)时,可以考虑以下算法:

(1). 用扩展欧几里得算法找到 \(x\) 和 \(y\),使得:

\[e \cdot x + \varphi(n) \cdot y = 1,
\]

(2). 上式中,\(x\) 模 \(\varphi(n)\) 的值即为 \(d\):

\[d \equiv x \bmod \varphi(n).
\]

如果 \(d < 0\),需要将其调整到正数范围:

\[d = d + \phi(n).
\]

代码

p=473398607161
q=4511491
e=17 # 扩展欧几里得算法
def extended_euclidean(a, b):
if b == 0:
return a, 1, 0
gcd, x1, y1 = extended_euclidean(b, a % b)
x = y1
y = x1 - (a // b) * y1
return gcd, x, y def calculate_private_key(p, q, e):
phi = (p - 1) * (q - 1)
gcd, x, y = extended_euclidean(e, phi)
if gcd != 1:
raise ValueError("e and phi(n) are not coprime")
d = x % phi
if d < 0:
d += phi
return d d = calculate_private_key(p, q, e)
print(f"私钥 d 是: {d}")
# 输出结果应为“私钥 d 是: 125631357777427553”

攻防世界:Crypto习题之easy_RSA的更多相关文章

  1. CTF -攻防世界-crypto新手区(5~11)

    easy_RSA 首先如果你没有密码学基础是得去恶补一下的 然后步骤是先算出欧拉函数 之后提交注意是cyberpeace{********}这样的 ,博主以为是flag{}耽误了很长时间  明明没算错 ...

  2. 攻防世界 - Crypto(一)

    base64: 根据题目base64可知编码方式,下载附件发现是一个txt文件,把内容用工具解码就彳亍了,即可得到flag, flag: cyberpeace{Welcome_to_new_World ...

  3. 攻防世界-Crypto高手进阶区部分Writeup

    1.flag_in_your_hand && flag_in_your_hand1 下载,解压后 打开index文件,直接点击get flag错误,输入其他点击也同样 打开js文件,在 ...

  4. 攻防世界CRYPTO新手练习

    0x01 base64 直接base64 Decode 得到flag cyberpeace{Welcome_to_new_World!} 0x02 Caesar key为12 的恺撒密码,解密德fla ...

  5. CTF -攻防世界-crypto新手区(1~4)

    题目已经提示用base64直接解密就行 base64解密网址 http://tool.oschina.net/encrypt?type=3 题目提示是凯撒密码 http://www.zjslove.c ...

  6. Xctf攻防世界—crypto—Normal_RSA

    下载压缩包后打开,看到两个文件flag.enc和pubkey.pem,根据文件名我们知道应该是密文及公钥 这里我们使用一款工具进行解密 工具链接:https://github.com/3summer/ ...

  7. RSA脚本环境配置-攻防世界-OldDriver

    [Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...

  8. 攻防世界 reverse evil

    这是2017 ddctf的一道逆向题, 挑战:<恶意软件分析> 赛题背景: 员工小A收到了一封邮件,带一个文档附件,小A随手打开了附件.随后IT部门发现小A的电脑发出了异常网络访问请求,进 ...

  9. CTF--web 攻防世界web题 robots backup

    攻防世界web题 robots https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=506 ...

  10. CTF--web 攻防世界web题 get_post

    攻防世界web题 get_post https://adworld.xctf.org.cn/task/answer?type=web&number=3&grade=0&id=5 ...

随机推荐

  1. CSS – Clip Path

    前言 我是在搞 1 side box-shadow 发现这个功能的. 平常很少做特效, 所以对这个好功能缺乏认识. 这篇大概记入一下先, 以后有认真用再补上细节. 参考 Youtube – Aweso ...

  2. JavaScript – Iterator

    参考 阮一峰 – Iterator 和 for...of 循环 前言 es6 以后经常可以看到 for...of 的踪迹. 如果你细看会发现它挺神奇的. 不只是 Array 可以被 for...of, ...

  3. RabbitMQ——死信队列介绍和应用

    死信和死信队列的概念 什么是死信?简单来说就是无法被消费和处理的消息.一般生产者将消息投递到broker或者queue,消费者直接从中取出消息进行消费.但有时因为某些原因导致消息不能被消费,导致消息积 ...

  4. [namespace hdk] diff.h

    Example cth.txt 12345 54321 114514 hdk.txt 12345 54321 114514 #include"diff.h" using names ...

  5. 2021年9月国产数据库排行榜-墨天轮:达梦奋起直追紧逼OceanBase,openGauss反超PolarDB再升一位

    2021年9月国产数据库排行榜已在墨天轮发布,本月参与排名的数据库总数达到了142个. 一.9月国产数据库流行度排行榜前15名 先来看看排行榜前五名,虽然PingCAP的TiDB分数本月下降31.82 ...

  6. 2022年9月中国数据库排行榜:榜眼、探花纷纷易主,AnalyticDB蝉联榜单十强

    夏去秋来清风至,榜首前三起涟漪. 2022年9月的 墨天轮中国数据库流行度排行榜火热出炉,相比上月新增两个数据库, 本月榜单前十名可以用一句话概括为:OceanBase新版发布先声夺人,达梦低调做事暂 ...

  7. Solon 3.0 新特性:SqlUtils

    Solon 3.0 引入了新的 SqlUtils 用于数据库基础操作,SqlUtils 是对 JDBC 较为原始的封装,采用了 Utils API 的风格,极为反普归真. 特性有: 支持事务管理 支持 ...

  8. 8. REM解释一下

    rem (root em )是 c3 新增的相对单位 ,相对的是html根元素,动态变化自己的大小 : 补充: em 也是相对单位,相对的是父元素来动态设置自己大小 : px 是绝对单位,是相对于屏幕 ...

  9. 云原生周刊:Kubernetes v1.29 正式发布 | 2023.12.18

    开源项目推荐 Robusta KRR Robusta KRR(Kubernetes Resource Recommender)是一个用于优化 Kubernetes 集群中资源分配的 CLI 工具.它从 ...

  10. cornerstone中RAFT的buffer的实现

    1.概览: 谈到raft协议实现就绕不开网上流行的mit6.824,但其为go语言,官方没有lab的答案,框架也很晦涩难懂,且全网没有一个博客对其有清晰的解释,有的只是甩一堆名词然后直接贴没有任何注释 ...