diff --git "a/Cry/submissions/Cry/submissions/25-Cry-shuiyue-\346\235\250\346\231\266.md" "b/Cry/submissions/Cry/submissions/25-Cry-shuiyue-\346\235\250\346\231\266.md"
index bd4cf42..6d0f49a 100644
--- "a/Cry/submissions/Cry/submissions/25-Cry-shuiyue-\346\235\250\346\231\266.md"
+++ "b/Cry/submissions/Cry/submissions/25-Cry-shuiyue-\346\235\250\346\231\266.md"
@@ -2,7 +2,7 @@
>(开始的时候想直接在windows系统上进行配置,但是我的电脑无法开启虚拟机平台
>>(开启进度(各种方式)永远卡在5.9%/14.6%/37.8%/56.2,直到失败)
>最后在别人的帮助下才装Arch liunx,然后再配置下载,直到这个星期六中午才配好。
-
+![结果如图]
##RSA算法学习
1.RSA是一种非对称加密算法,依靠大素数分解困难,费马小定理与二次探测原理(即米勒拉宾素性测试)为基础。
2.先生成两位512位的素数*p,q*,然后通过**欧拉函数**计算出其小于其乘积N的素数的个数&phi(N)。
@@ -10,9 +10,87 @@
4.算私钥*d*满足e*d = 1(mod&phi(N))。
>>
>>进度过慢,我加几张笔记吧(假期里的老本)
->>
->>
->>
+>>![笔记1]
+>>![笔记2]
+>>![笔记3]
+
+##题目一:eeeeez_rsa
+题目:
+```python
+ from Crypto.Util.number import *
+ from secrets import randbits
+
+ p = getPrime(512)
+ q = getPrime(512)
+
+ n = p * q
+ e = 65537
+
+ m = bytes_to_long(flag)
+
+ c = pow(m, e, n)
+
+ print("p =", p)
+ print("q =", q)
+ print("e =", e)
+ print("c =", c)
+ '''
+ p = 7833526559350210716763736624276871338973265302039384005037668270722459749111510212645578582715412039060908556429504391788904499303021963918033838457712021
+ q = 11274522482114648167653425707657117942167215969612324249057858493398092816663094339833695146914712716091767834292452373966791325922322967827879446489910963
+ e = 65537
+ c=1022172159188954584457305025459579586118234885650614560548034824653447703208511380139038324539142727422462790049010578748622777418895745000669136397439695287885078
+'''
+```
+
+
+
+解答:
+解题思路:
+1.知识了解:Crypto.Util.number 是 PyCryptodome 库中的一个工具模块,专门处理大整数的密码学运算
+2.题目给出了n分出的两个素数p,q,给出了私钥e,密文c,明文m。
+3.在题目中发现m是 flag 转化成的数字,那么要得到flag,就要先把m 转化成字节串,再转化成字符串,于是
+先'long_to_bites',然后再decode,就得到了flag。
+
+
+题目二:What is dpdq
+题目:
+```python
+from Crypto.Util.number import *
+
+p = getPrime(512)
+q = getPrime(512)
+
+n = p * q
+
+m = bytes_to_long(flag)
+
+c = pow(m, e, n)
+
+phi = (p - 1) * (q - 1)
+d = inverse(e, phi)
+
+dp = d % (p - 1)
+dq = d % (q - 1)
+
+print("p =", p)
+print("q =", q)
+print("dp =", dp)
+print("dq =", dq)
+print("c =", c)
+'''
+p = 7815414185491141116816659592648655093824828684096724566017773298150863675227130435782645950134326106977982747903113904523205447790009729530724322503221833
+q = 9989016009119164140172559452397593815416653032520645020530362343604703571290641132626496035194681031089349635895258123948622879868985300264027551088746747
+dp = 4010681140217557380422935065992638785960856284290416720391683347779267392850433355451759290094414691393922757792964689212573746434435619933431808206484225
+dq = 2650091114188243387783699150080671432452650354401886796343461099352350290584408461982954461814393687345324352950407449243857759926179828428073409383707519
+c = 49442655923625309909385017545371837339079019962533687954830521594031788193892512818961352203881969632046490177930759665200677302956816647378151364853230118743634390053041583940566732297636464662866406886764229490729837423276227228984024967061624432225315562131278455141688731687433597958272776740673914705069
+'''
+```
+题目解答:
+题目分析:
+1.题目相较于第一题,给出了dp,dq,dp与dq是p,q减1后去模的结果,可以减少计算。
+2.通过dp,dq先解出密钥的一部分,然后利用中国剩余定理解得 m。
+3.将m 转换为字符型,得到flag。
+
##为什么要选择这个方向:
>实践出真知