ctf密码学基础
最近想要学习ctf密码学的部分,于是开始了从百度百科的⼊门之旅。
这⾥借助⽶斯特安全团队的⼀款⼯具来进⾏实际编码解码。
⼀,凯撒密码
明⽂中的所有字母都在字母表上向后(或向前)按照⼀个固定数⽬进⾏偏移后被替换成密⽂。----百度百科其实就是按照特定的顺序将字母替换。⽐如后移2位,那么a就变成c,d就变成f。
下⾯更直观的看⼀下:
⼆,Rot13加密
这种加密与凯撒⼗分类似,就是凯撒密码中移动13位的结果
三,培根密码
这是利⽤a和b(A和B也⾏)来表⽰⼆进制中的0和1,并以此来表⽰26个字母,培根密码5位⼀组。
这个加密⽅式主要特征是只有两种不同的字母,都可转换为ab形式
def就可以表⽰为AAABBAABAAAABAB
在线url网址编码解码四,栅栏密码
百科上的例⼦:
⼀般⽐较常见的是2栏的栅栏密码。
⽐如:THERE IS A CIPHER
去掉空格后变为:THEREISACIPHER
两个⼀组,得到:TH ER EI SA CI PH ER
先取出第⼀个字母:TEESCPE
再取出第⼆个字母:HRIAIHR
连在⼀起就是:TEESCPEHRIAIHR
还原为所需密码。
⽽解密的时候,我们先把密⽂从中间分开,变为两⾏:
T E E S C P E
H R I A I H R
再按上下上下的顺序组合起来:
THEREISACIPHER
分出空格,就可以得到原⽂了:
THERE IS A CIPHER
但也存在不是两栏的情况,就需要对密⽂的总字数分解因数,尝试分栏的种类。⽐如密⽂TAHCEIRPEHIESR 14个字母,可以考虑2栏或7栏,解密如下:
根据不同情况,到有意义的⼀组。
五,Base64编码
还是先看百科上的例⼦
转码过程例⼦:
3*8=4*6
内存1个字节占8位
转前: s 1 3
先转成ascii:对应 115 49 51
2进制: 01110011 00110001 00110011
6个⼀组(4组)011100110011000100110011
然后才有后⾯的 011100 110011 000100 110011
然后计算机是8位8位的存数 6不够,⾃动就补两个⾼位0了
所有有了⾼位补0
科学计算器输⼊00011100 00110011 00000100 00110011
得到 28 51 4 51
查对下照表 c z E z
核⼼思想在于将8位的⼆进制转换为6位的⼆进制。
⽽6位⼆进制共64种组合,可以表⽰10个数字,26个字母的⼤⼩写,外加符号+和/。⼀共64个。
对应编码
有⼀点要特别指出,当明⽂个数不是三的倍数时,就会出现明⽂数*8%6不为零的情况,
这是如果余数为2,就在末尾补两个等号,如果余数为4,就补⼀个等号。对于余下的2个或4个⼆进制采⽤⾼位补零的⽅法。
⽐如密⽂:cmFubA== 的明⽂为ranl
因此我们可以得出base64编码后的特征:只含有数字,字母,和符号+ / =。
六,url编码
这是浏览器⽅便传输信息和加强安全性的编码。url编码是字符ASCII码的⼗六进制加上%的格式。
部分对应表:
但在url中不是对所有的字符都要进⾏url编码,⼀般的字母和数字是不会被编码的。会以原本形式传递。
七,Unicode编码
这是对ASCII码表的扩展,可以表⽰更多的字符,采⽤2个字节16位的储存形式。解码后可以看到16进制的表⽰形式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论