Skip to content

Commit 063242a

Browse files
committed
2 parents 8646c33 + a45c34f commit 063242a

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

docs/learn/crypto.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,11 @@ p = getPrime(256)
314314
q = getPrime(256)
315315
316316
# 计算n,即p和q的乘积,用于RSA算法的模数
317+
<<<<<<< HEAD
317318
n = p * q
319+
=======
320+
n = p*q
321+
>>>>>>> a45c34ff209a4c248d7650e232fa17e26ff8d5a3
318322
# 定义公钥指数e,通常为65537
319323
e = 65537
320324
# 将flag转换为长整数
@@ -333,6 +337,7 @@ print(f'c = {c}')
333337
print(f'p = {p}')
334338
# 打印质数q(通常在CTF中不会直接给出)
335339
print(f'q = {q}')
340+
<<<<<<< HEAD
336341
337342
# 以下是输出的结果,这些值通常在 CTF 题目中给出
338343
# n = 4024941574680124502316363981547051098032677531528457166859670261861728313081282635664023890534034586556845494323497683923813915739234466472396261320600483
@@ -344,6 +349,22 @@ print(f'q = {q}')
344349

345350
```python:line-numbers [RSA 解密脚本]
346351
# 导入 Crypto.Util.number 模块中的所有函数,用于处理数字和字节之间的转换等
352+
=======
353+
"""
354+
# 以下是打印的结果,这些值通常在CTF挑战中给出
355+
n = 4024941574680124502316363981547051098032677531528457166859670261861728313081282635664023890534034586556845494323497683923813915739234466472396261320600483
356+
e = 65537
357+
c = 226967182640114431119923862488626190608050511354278604627242247124377735518111678279381846350389469161980779137969837090666693533616114290831130137310320
358+
p = 62658315832909660478685872111870233686035497063073558738980225214351386198939
359+
q = 64236351092062515945998729497153532140067861836088195242257976217499252460697
360+
"""
361+
```
362+
363+
- 解密脚本(需要熟练掌握)
364+
365+
```python
366+
# 导入Crypto.Util.number模块中的所有函数,用于处理数字和字节之间的转换等
367+
>>>>>>> a45c34ff209a4c248d7650e232fa17e26ff8d5a3
347368
from Crypto.Util.number import *
348369

349370

@@ -361,17 +382,28 @@ q = 6423635109206251594599872949715353214006786183608819524225797621749925246069
361382

362383

363384
"""处理部分"""
385+
<<<<<<< HEAD
364386
# 计算欧拉函数 phi(n),用于RSA算法中的私钥计算
365387
phi = (p-1)*(q-1)
366388
# 计算私钥指数 d ,即 e 在模 phi(n) 的逆元
367389
d = inverse(e,phi)
368390
# 使用私钥指数 d 解密密文 c,得到明文 m,具体就是 m = c**d (modn)
369391
m = pow(c, d, n)
370392
# 将解密后的长整数 m 转换回字符串,得到原始的 flag 信息
393+
=======
394+
# 计算欧拉函数φ(n),用于RSA算法中的私钥计算
395+
phi = (p-1)*(q-1)
396+
# 计算私钥指数d,即 e在模φ(n)的逆元
397+
d = inverse(e,phi)
398+
# 使用私钥指数d解密密文c,得到明文m 具体就是 m = c**d (modn)
399+
m = pow(c,d,n)
400+
# 将解密后的长整数m转换回字符串,得到原始的flag信息
401+
>>>>>>> a45c34ff209a4c248d7650e232fa17e26ff8d5a3
371402
flag = long_to_bytes(m)
372403

373404

374405
"""输出部分"""
406+
<<<<<<< HEAD
375407
# 打印解密后的 flag 信息
376408
print(flag)
377409
```
@@ -385,3 +417,20 @@ print(flag)
385417
::: tip 写在最后
386418
密码路上道阻且长,希望同学们能坚持下去,必定能见到密码学的彩虹!
387419
:::
420+
=======
421+
# 打印解密后的flag信息
422+
print(flag)
423+
```
424+
425+
426+
427+
## 以后的路
428+
429+
​ 入门RSA算法后,将跟着NSSCTF的工坊课程自主继续深造RSA,在这基础上一起学习AES对称加密、圆锥曲线算法、LCG流密码、格密码和DSA密码等等。
430+
431+
432+
433+
## 写在最后的话
434+
435+
密码路上道阻且长,希望兄弟们能坚持下去,必定能见到密码学的彩虹!
436+
>>>>>>> a45c34ff209a4c248d7650e232fa17e26ff8d5a3

docs/learn/index.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import Container from '@/components/docs/Container.vue'
77
import Link from '@/components/docs/Link.vue'
88
import { ElTag } from 'element-plus'
99
import 'element-plus/es/components/tag/style/css'
10-
1110
</script>
1211

1312
# 快速入门

0 commit comments

Comments
 (0)