密碼學類


最近ctf做的比較多,順便整理一下做個筆記,大概有加密篇、隱寫篇、逆向破解和web方向的幾篇文章,整理出來之后會陸續(xù)發(fā)出來。

0x01 Base64

Base64: ZXZhbCgkX1BPU1RbcDRuOV96MV96aDNuOV9qMXVfU2gxX0oxM10pNTU2NJC3ODHHYWJIZ3P4ZWY=

Base64編碼要求把3個8位字節(jié)(3*8=24)轉(zhuǎn)化為4個6位的字節(jié)(4*6=24),之后在6位的前面補兩個0,形成8位一個字節(jié)的形式。 如果剩下的字符不足3個字節(jié),則用0填充,輸出字符使用'=',因此編碼后輸出的文本末尾可能會出現(xiàn)1或2個'='

Base32: Base32和Base64相比只有一個區(qū)別就是,用32個字符表示256個ASC字符,也就是說5個ASC字符一組可以生成8個Base字符,反之亦然。

0x02 希爾密碼

希爾密碼:密文: 22,09,00,12,03,01,10,03,04,08,01,17 (明文:wjamdbkdeibr)

解題思路:使用的矩陣是 1 2 3 4 5 6 7 8 10

0x03 柵欄密碼

柵欄密碼:把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規(guī)律的話。

密文樣例:tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.

解密程序:

char s[]= "tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.";

char t[86]= "";

int i,j,k;

k=0;

for (i=0;i<17;i++)

{

for(j=0;j<5;j++)

{

t[k++]= ch[j*17+i];

}

}

for(i=0;i<85;i++)

{

printf("%c",t[i]);

}

0x04 凱撒密碼

凱撒密碼:通過把字母移動一定的位數(shù)來實現(xiàn)加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個固定數(shù)目進行偏移后被替換成密文。

密文樣例:U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8"&:9U]RH;g=8Y!U92'=j*$KH]ZSj&[S#!gU#*dK9\.

解題思路:得知是凱撒加密之后,嘗試進行127次輪轉(zhuǎn)爆破:

lstr="""U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8"&:9U]RH;g=8Y!U92'=j*$KH]ZSj&[S#!gU#*dK9\."""


for p in range(127):

str1 = ''

for i in lstr:

temp = chr((ord(i)+p)%127)

if 32

str1 = str1 + temp

feel = 1

else:

feel = 0

break

if feel == 1:

print(str1)

0x05 Unicode

密文樣例:\u5927\u5bb6\u597d\uff0c\u6211\u662f\u0040\u65e0\u6240\u4e0d\u80fd\u7684\u9b42\u5927\u4eba\uff01\u8bdd\u8bf4\u5fae\u535a\u7c89\u4e1d\u8fc7\

在線解密:tool.chinaz.com/Tools/Unicode.aspx

0x06 brainfuck

類型:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]

>++.>+.+++++++..+++.>++.<<+++++++++++++++.

>.+++.------.--------.>+.>.

利用BFVM.exe直接解密

用法 loadtxt 1.txt

在線解密:http://www.splitbrain.org/services/ook

0x07 摩斯密碼

密文樣例:-- --- .-. ... .

0x08 jsfuck

密文中 ()[]{}!+

在線解密:

www.jsfuck.com

0x09 培根密碼

培根所用的密碼是一種本質(zhì)上用二進制數(shù)設(shè)計的。不過,他沒有用通常的0和1來表示,而是采用a和b。

0x0A 豬圈密碼又稱共濟會密碼

0x0B CRC32

密文樣例:4D1FAE0B


import zlib

def crc32(st):

crc = zlib.crc32(st)

if crc > 0:

return "%x" % (crc)

else:

return "%x" % (~crc ^ 0xffffffff)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容