端午节快到了,终于可以放假了,奈斯~
放假时也得提升自己哦,开始学习,又要做题咯,废话少说,现在开始
————————————————————————————————————————————
第十一题:RSA(题目如图)
十分经典的RSA加密,给出了p,q,e,求d,是比较容易的一种了,下面先给出解题代码。
import gmpy2
p = 473398607161
q = 4511491
e = 17
d = gmpy2.invert(e,(p-1)*(q-1))
print (d)
其中的invert函数可能不太了解,这其实就是求逆元的函数,下面给出一个invert函数的例子看一看。
import gmpy2
#求一个数模x的逆元y
#如3*4 = 1 mod 11
a = gmpy2.invert(3,11)
print(a)
毫无疑问这里输出的是4,但是为什么要用到这个函数呢?这就和RSA加密的原理有关了,下面给出其原理(来自百度百科)
求出d后,提交显示成功!
下面也给出一张图来概括一下RSA解密的解题思路和方向,具体的以后遇到详细的题目再说吧。(大神整理的)
————————————————————————————————————————————
第十二题:丢失的MD5(题目如图)
给出的是一段python代码。
直接运行,报错,简单看了看代码,发现居然是用python2编写的。。。
下面给出我自己修改后的适用于python3的代码。
import hashlib
for i in range(32,127):
for j in range(32,127):
for k in range(32,127):
m=hashlib.md5()
m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode("utf8"))
des=m.hexdigest()
if 'e9032' in des and 'da' in des and '911513' in des:
print(des)
其实也没有很大的变化,就是print后面需要加括号,然后要指定形式编码encode(utf8),否则会报string must be encoded before hashing的错误,跑出来的结果直接输入,提交成功!
————————————————————————————————————————————
第十三题:Alice与Bob(题目如图)
分解为两个素数嘛~,直接丢出在线分解网站http://www.factordb.com/,顺带一提,RSA的n分解中其实经常用到这个,建议收藏网址。
分解出两个数如下,稍加组合为101999966233
丢到MD5中加密去,得到flag,提交显示成功!
————————————————————————————————————————————
第十四题:rsarsa(题目如图)
给出了p,q,e,c,显然这里是想让我们求明文m
这边给出代码示例(说实话这题真没做出来,虽然理解了原理但是python基础还是有点差,建议小伙伴们还是要从打牢基础开始,否则就像我这样天天偷别人代码了QAQ)
import gmpy2
def Decrypt(c,e,p,q):
L=(p-1)*(q-1)
d=gmpy2.invert(e,L)
n=p*q
m=gmpy2.powmod(c,d,n)
flag=str(m)
print("flag{"+flag+"}")
if __name__ == '__main__':
p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
Decrypt(c,e,p,q)
最后解出flag,提交显示成功!
————————————————————————————————————————————
第十五题:大帝的密码武器(题目如图)
凯撒大帝,凯撒大帝,此题自然是与凯撒加密有关系,根据给出的单词来进行逐个尝试。
根据解密后的单词是否是规则的来判断其偏移量,发现当其为13时,翻译为security,故偏移量就是13.
同理,再将comechina使用偏移量13进行加密,即可得到flag,提交,显示成功!
————————————————————————————————————————————
第十六题:Windows系统密码(题目如图)
重点自然先放在ctf这一行上,就两段加密的,依次丢到我上一篇给出MD5在线解密中,解出flag。
————————————————————————————————————————————
第十七题:信息化时代的步伐(题目如图)
说实话,一开始全无头绪,甚至还想到过繁体字,但是数字和繁体字也没啥关系啊(苦恼ing)
然后去百度上查了一下中文转换数字或者数字转换中文,没想到居然还找到了。
这玩意叫做中文电码,给出网址如下:https://dianma.bmcx.com/
丢进去解出flag,提交成功!
————————————————————————————————————————————
第十八题:传统知识+古典密码(题目如图)
第一次见到这种题,一脸懵逼。。。。。还是先去百度上找一下对应表,至少能够转换成数字。
转换成数字之后得到这几个:28,30,23,8,17,10,52,30 。
背后那个+甲子有点没搞明白不晓得是加1还是加60,不管了,先都试一下。
如果+1的话,就是29,31,24,9,18,11,53,31。 对照一下Ascll码表,得到)1$。。。。。。看了三位就知道有问题了,完全不是正常密码嘛。
那么加60试一下,就是88,90,83,68,77,70,76,90,对照Acsll码表,得到一个略显正常的字符串XZSDMFLZ。
古典密码就这三四种,那就都试一下吧,首先跑一下栅栏,好吧,都是不规则字符又不是拼音又不是单词,那估计第一种就不是了。
维吉尼亚是需要秘钥的,这边也没给,暂时先排除。
那就试一下凯撒密码,丢进去枚举。
哦豁!这个位置有点像中文了,复制一下丢到栅栏密码去换换顺序。
得到shuangyu,诚然,这题确实很难想,需要对古典密码的加密方式非常熟悉才能顺利做出来。
————————————————————————————————————————————
第十九题:凯撒?替换?呵呵!(题目如图)
给出的一串加密字符,凯撒密码的替换加密,直接丢出在线网站https://quipqiup.com/,丢进去解密,第一行就是flag!
————————————————————————————————————————————
第二十题:萌萌哒的八戒(题目如图)
奇怪,密码题里怎么混进了一道misc题目。。。。用010检查了一下并未发现异常,所以玄机一定在下面那几个特殊符号上面。
突然想到,猪?是否会是猪圈密码?于是查了一下猪圈密码的对照表
果不其然,就是和下面一毛一样的,翻译一下:whenthepigwanttoeat,提交,显示成功!!
————————————————————————————————————————————
2022年6月5日晚上8点42完成,这次难度确实比前十题要难,想不出来的时候真的是脑阔疼。。