練習題中是一些加解密小練習題,可以參考加解密小結1和加解密小結2中的特徵對應進行加解密。可以利用工具。
RSA練習題:python腳本解RSA,腳本代碼爲(這裏給出了p,q實際做題過程中是需要利用工具解p,q):
#!/usr/bin/env python
import gmpy
from Crypto.PublicKey import RSA
n = 41069065654959614597750207738698085798765257876378561837894254544512565197793
c = 27990707239527629138352696377606718299992092729307910015562504696905353450041
e = long(11)
p = 218538667198531171522213512860093810267
q = 187925853952657607512617865502535480179
d = long(gmpy.invert(e,(p-1)*(q-1)))
key = RSA.construct((n,e,d))
print key
print key.decrypt(c)
print hex(key.decrypt(c))
print hex(key.decrypt(c))[2:-1].decode('hex')
上面腳本中給出了p,q。做題過程中可以利用 yafu-1.34大數分解N 工具來求解p,q。解壓後的文件爲:
雙擊運行yafu-Win32.exe,用命令factor(N)來大數分解N
分解前,將factor.log中的內容清空。分解過程太快了,來不及截圖,分解完成後,在factor.log中可以得到分解的p,q:
然後運行rsa腳本解題得:
紅色部分即爲flag,這裏我是在kali中運行的腳本。
再來一道加解密的題,題目:
0x253464253534253435253335253433253661253435253737253464253531253666253738253464253434253637253462253466253534253662253462253464253534253435253738253433253661253435253737253466253531253666253738253464253434253435253462253464253534253435253332253433253661253435253738253464253531253666253738253464253534253535253462253464253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253462253464253534253435253737253433253661253662253334253433253661253662253333253433253661253435253738253465253431253364253364
編寫python腳本:decode.py:
str='253464253534253435253335253433253661253435253737253464253531253666253738253464253434253637253462253466253534253662253462253464253534253435253738253433253661253435253737253466253531253666253738253464253434253435253462253464253534253435253332253433253661253435253738253464253531253666253738253464253534253535253462253464253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253462253464253534253435253737253433253661253662253334253433253661253662253333253433253661253435253738253465253431253364253364'
def HexDe(str):
decstr = ''
for i in range(0,len(str),2):
decstr +=chr(int(str[i:i + 2],16))
return decstr
print(HexDe(str))
運行得:
明顯看出是url編碼,利用工具解碼:
解出的答案爲:
MTE5CjEwMQoxMDgKOTkKMTExCjEwOQoxMDEKMTE2CjExMQoxMTUKMTA0CjEwNQoxMjEKOTcKMTEwCjk4Cjk3CjExNA==
base64解碼之:
得到一串數字:119 101 108 99 111 109 101 116 111 115 104 105 121 97 110 98 97 114,然後ASCII轉字符得:
得到:welcometoshiyanbar,即爲flag。題目及工具。
再來看一個柵欄解碼題目:Alice和Bob用柵欄密碼傳遞了一個消息,解開它。cytgahicorporpysol
利用工具解得: