Skip to content

Commit a859eec

Browse files
authored
Fixes typo (#7)
1 parent ac93b49 commit a859eec

File tree

1 file changed

+1
-50
lines changed

1 file changed

+1
-50
lines changed

docs/learn/crypto.md

Lines changed: 1 addition & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ RSA 中涉及到我们之前没有或者说不太重视的一些数学知识点
267267

268268
在上面第三个公式 $e$ 和 $d$ 的关系式中有 $d^{-1}$,这涉及到模运算中求逆元,这点展开会涉及到其他数学知识,这里先放着不谈。只要记住在模运算中,没有除法,只有求逆元然后再相乘。具体的代码实现会在下面讲述。
269269

270-
- 海纳百川的 $k 和无所不能的公因数
270+
- 海纳百川的 $k$ 和无所不能的公因数
271271

272272
在上面的取模和模运算中,涉及到大量的 $\mathrm{mod}\ n$ 操作,如何转化成可以手算推理的东西呢?
273273

@@ -314,11 +314,7 @@ p = getPrime(256)
314314
q = getPrime(256)
315315
316316
# 计算n,即p和q的乘积,用于RSA算法的模数
317-
<<<<<<< HEAD
318317
n = p * q
319-
=======
320-
n = p*q
321-
>>>>>>> a45c34ff209a4c248d7650e232fa17e26ff8d5a3
322318
# 定义公钥指数e,通常为65537
323319
e = 65537
324320
# 将flag转换为长整数
@@ -337,7 +333,6 @@ print(f'c = {c}')
337333
print(f'p = {p}')
338334
# 打印质数q(通常在CTF中不会直接给出)
339335
print(f'q = {q}')
340-
<<<<<<< HEAD
341336
342337
# 以下是输出的结果,这些值通常在 CTF 题目中给出
343338
# n = 4024941574680124502316363981547051098032677531528457166859670261861728313081282635664023890534034586556845494323497683923813915739234466472396261320600483
@@ -349,22 +344,6 @@ print(f'q = {q}')
349344

350345
```python:line-numbers [RSA 解密脚本]
351346
# 导入 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
368347
from Crypto.Util.number import *
369348
370349
@@ -382,28 +361,17 @@ q = 6423635109206251594599872949715353214006786183608819524225797621749925246069
382361
383362
384363
"""处理部分"""
385-
<<<<<<< HEAD
386364
# 计算欧拉函数 phi(n),用于RSA算法中的私钥计算
387365
phi = (p-1)*(q-1)
388366
# 计算私钥指数 d ,即 e 在模 phi(n) 的逆元
389367
d = inverse(e,phi)
390368
# 使用私钥指数 d 解密密文 c,得到明文 m,具体就是 m = c**d (modn)
391369
m = pow(c, d, n)
392370
# 将解密后的长整数 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
402371
flag = long_to_bytes(m)
403372
404373
405374
"""输出部分"""
406-
<<<<<<< HEAD
407375
# 打印解密后的 flag 信息
408376
print(flag)
409377
```
@@ -417,20 +385,3 @@ print(flag)
417385
::: tip 写在最后
418386
密码路上道阻且长,希望同学们能坚持下去,必定能见到密码学的彩虹!
419387
:::
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

0 commit comments

Comments
 (0)