1. 程式人生 > >凱撒和某某加密實驗吧

凱撒和某某加密實驗吧

#實現33-126ASCII能列印的字元迴圈平移
#和通常凱撒加密不同注意
def change(c,i):
	num=ord(c)
	if(num>=33 and num<=126):
		num=33+(num+i-33)%(94)#126-33=93
	return chr(num)

	
def kaisa_jiAmi(string,i):
	string_new=''
	for s in string:
		string_new+=change(s,i)
	print(string_new)
	return string_new

#本題有種暴力解密感覺
def kaisa_jiEmi(string):
	for i in range(0,94):
		print('第'+str(i+1)+'種可能:',end='   ')
		#區別在於 string 是該物件原本就是字串型別, 而 str()則是將該物件轉換成字串型別。
		kaisa_jiAmi(string,i)
		
#你要知道input輸入的資料型別都是string	
def main():
	print('請輸入操作,注意不是平常26種:')
	choice=input('1:愷撒加密,2:凱撒窮舉解密.請輸入1或2:')
	if choice=='1':
		string=input('請輸入需要加密字串: ')
		num=int(input('請輸入需要加密的KEY: '))
		kaisa_jiAmi(string,num)
	elif choice=='2':
		string=input('請輸入需要解密字串: ')
		kaisa_jiEmi(string)
	else:
		print('輸入錯誤,請重試')
		main()
		
if __name__=='__main__':
	main()

	
	
	
http://www.shiyanbar.com/ctf/1822
凱撒和某某加密
aZZg/x\ZbavpZiEZp+n)o+




解:
1.愷撒密碼:明文所有字母都在字母表上向後(或向前)
按照一個固定數目進行偏移後被替換成密文。
通常凱撒列出26種(其實包括自身不變KEY=0)ascii表的字母凱撒移動
分析:aZZg/x\ZbavpZiEZp+n)o+這裡不全是字母所以筆者認為這裡愷撒密碼
是33-126Ascii可列印的整個ascii表的凱撒移動,好了,看程式結果吧。
第1種可能:   aZZg/x\ZbavpZiEZp+n)o+
第2種可能:   b[[h0y][cbwq[jF[q,o*p,
第3種可能:   c\\i1z^\dcxr\kG\r-p+q-
第4種可能:   d]]j2{_]edys]lH]s.q,r.
第5種可能:   e^^k3|`^fezt^mI^t/r-s/
第6種可能:   f__l4}a_gf{u_nJ_u0s.t0
第7種可能:   g``m5~b`hg|v`oK`v1t/u1
第8種可能:   haan6!caih}wapLaw2u0v2
第9種可能:   ibbo7"dbji~xbqMbx3v1w3
第10種可能:   jccp8#eckj!ycrNcy4w2x4
第11種可能:   kddq9$fdlk"zdsOdz5x3y5
第12種可能:   leer:%geml#{etPe{6y4z6
第13種可能:   mffs;&hfnm$|fuQf|7z5{7
第14種可能:   nggt<'igon%}gvRg}8{6|8
第15種可能:   ohhu=(jhpo&~hwSh~9|7}9
第16種可能:   piiv>)kiqp'!ixTi!:}8~:
第17種可能:   qjjw?*ljrq("jyUj";~9!;
第18種可能:  
[email protected]
+mksr)#kzVk#<!:"<
第19種可能:   sllyA,nlts*$l{Wl$=";#=
第20種可能:   tmmzB-omut+%m|Xm%>#<$>
第21種可能:   unn{C.pnvu,&n}Yn&?$=%?
第22種可能:   voo|D/qowv-'o~Zo'@%>&@
第23種可能:   wpp}E0rpxw.(p![p(A&?'A
第24種可能:   xqq~F1sqyx/)q"\q)B'@(B
第25種可能:   yrr!G2trzy0*r#]r*C(A)C
第26種可能:   zss"H3us{z1+s$^s+D)B*D
第27種可能:   {tt#I4vt|{2,t%_t,E*C+E
第28種可能:   |uu$J5wu}|3-u&`u-F+D,F
第29種可能:   }vv%K6xv~}4.v'av.G,E-G
第30種可能:   ~ww&L7yw!~5/w(bw/H-F.H
第31種可能:   !xx'M8zx"!60x)cx0I.G/I
第32種可能:   "yy(N9{y#"71y*dy1J/H0J
第33種可能:   #zz)O:|z$#82z+ez2K0I1K
第34種可能:   ${{*P;}{%$93{,f{3L1J2L
第35種可能:   %||+Q<~|&%:4|-g|4M2K3M
第36種可能:   &}},R=!}'&;5}.h}5N3L4N
第37種可能:   '~~-S>"~('<6~/i~6O4M5O
第38種可能:   (!!.T?#!)(=7!0j!7P5N6P
第39種可能:   )""/
[email protected]
$"*)>8"1k"8Q6O7Q
第40種可能:   *##0VA%#+*?9#2l#9R7P8R
第41種可能:   +$$1WB&$,[email protected]:$3m$:S8Q9S
第42種可能:   ,%%2XC'%-,A;%4n%;T9R:T
第43種可能:   -&&3YD(&.-B<&5o&<U:S;U
第44種可能:   .''4ZE)'/.C='6p'=V;T<V
第45種可能:   /((5[F*(0/D>(7q(>W<U=W
第46種可能:   0))6\G+)10E?)8r)?X=V>X
第47種可能:   1**7]H,*[email protected]*9s*@Y>W?Y
第48種可能:   2++8^I-+32GA+:[email protected]
第49種可能:   3,,9_J.,43HB,;u,B[@YA[
第50種可能:   4--:`K/-54IC-<v-C\AZB\
第51種可能:   5..;aL0.65JD.=w.D]B[C]
第52種可能:   6//<bM1/76KE/>x/E^C\D^
第53種可能:   700=cN2087LF0?y0F_D]E_
第54種可能:   811>[email protected]`E^F`
第55種可能:   922?eP42:9NH2A{2HaF_Ga
第56種可能:   :[email protected];:OI3B|3IbG`Hb
第57種可能:   ;44AgR64<;PJ4C}4JcHaIc
第58種可能:   <55BhS75=<QK5D~5KdIbJd
第59種可能:   =66CiT86>=RL6E!6LeJcKe
第60種可能:   >77DjU97?>SM7F"7MfKdLf
第61種可能:   ?88EkV:[email protected]?TN8G#8NgLeMg
第62種可能:   @99FlW;[email protected]$9OhMfNh
第63種可能:   A::GmX<:BAVP:I%:PiNgOi
第64種可能:   B;;HnY=;CBWQ;J&;QjOhPj
第65種可能:   C<<IoZ><DCXR<K'<RkPiQk
第66種可能:   D==Jp[?=EDYS=L(=SlQjRl
第67種可能:   E>>Kq\@>FEZT>M)>TmRkSm
第68種可能:   F??Lr]A?GF[U?N*?UnSlTn
第69種可能:   [email protected]@Ms^[email protected]\[email protected][email protected]
第70種可能:   HAANt_CAIH]WAP,AWpUnVp
第71種可能:   IBBOu`DBJI^XBQ-BXqVoWq
第72種可能:   JCCPvaECKJ_YCR.CYrWpXr
第73種可能:   KDDQwbFDLK`ZDS/DZsXqYs
第74種可能:   LEERxcGEMLa[ET0E[tYrZt
第75種可能:   MFFSydHFNMb\FU1F\uZs[u
第76種可能:   NGGTzeIGONc]GV2G]v[t\v
第77種可能:   OHHU{fJHPOd^HW3H^w\u]w
第78種可能:   PIIV|gKIQPe_IX4I_x]v^x
第79種可能:   QJJW}hLJRQf`JY5J`y^w_y
第80種可能:   RKKX~iMKSRgaKZ6Kaz_x`z
第81種可能:   SLLY!jNLTShbL[7Lb{`ya{
第82種可能:   TMMZ"kOMUTicM\8Mc|azb|
第83種可能:   UNN[#lPNVUjdN]9Nd}b{c}
第84種可能:   VOO\$mQOWVkeO^:Oe~c|d~
第85種可能:   WPP]%nRPXWlfP_;Pf!d}e!
第86種可能:   XQQ^&oSQYXmgQ`<Qg"e~f"
第87種可能:   YRR_'pTRZYnhRa=Rh#f!g#
第88種可能:   ZSS`(qUS[ZoiSb>Si$g"h$
第89種可能:   [TTa)rVT\[pjTc?Tj%h#i%
第90種可能:   \UUb*sWU]\[email protected]&i$j&
第91種可能:   ]VVc+tXV^]rlVeAVl'j%k'
第92種可能:   ^WWd,uYW_^smWfBWm(k&l(
第93種可能:   _XXe-vZX`_tnXgCXn)l'm)
第94種可能:   `YYf.w[Ya`uoYhDYo*m(n*


2.柵欄密碼特點就是隔幾個字母能讀順成一個單詞,一般譯為分2個一組
具體情況具體分析,就像此題一處特殊單獨三個一組。觀察敏感得知,
反正有奇葩字元肯定不是,看有沒有{,},CTF,flag這種字元得知:

f__l4}a_gf{u_nJ_u0s.t0進行解密:

f__    =>f _  _
l4}     =>l 4   }
a_     =>a _
gf      =>g f
{u      =>{ u 
_n     =>_ n
J_     =>J _
u0     =>u 0
s.      =>s .
t0      =>t 0

結果就是flag{_Just_4_fun_0.0_}