密码学基础

CTF密码学算是比较常见的题型,并且其可以穿插在MISC、WEB等其他题型中,这里介绍几种比较常见、较为基础的一些密码。

0x00 ASCII码

美国信息交换标准代码,最常见的密码,是基于拉丁字母的一套电脑编码系统。

破解:

直接在网站上就可以找到对照表

或者在一些网站上可以在线解码

例如:http://www.ab126.com/goju/1711.html

注意解ASCII码时进制的区分,确定其数字的进制再解码

0x01 URL码

url编码是一种浏览器用来打包表单输入的格式

URL编码遵循下列规则: 每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象=,&;,和 % 这些特殊的字符。其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。

破解:

0x02 Base64码

如果看到字符串结尾是“=”,则首先考虑是否为Base64编码

其转化过程如下

先将字符转化成二进制ASCII字符(八位),再每六位进行一次编码,因此经常会出现字节长度(不是三字节)不够:

Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’(来补全四字节)。

为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。

破解:

BASH上的base64解码实现:

同样可以对照表格

或者在线网站解码,例如:http://www1.tc711.com/tool/BASE64.htm

0x03当铺密码

汉字有多少笔画出头即对应其代表的数字

例如:

破解:

对照汉字写出数字即可

0x04 qwe加密

利用电脑键盘上的排序对应着字母表中的排序

Q对应A,W对应B,E对应C……N对应Y,M对应Z。

破解:

对照键盘

字母过多可以自己按照规则写代码实现破解

0x05 栅栏密码

所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。

例如:

破解:

可以自己用代码或者直接手动解码(注意分组的多样性)

或者利用在线网站,例如:http://www.qqxiuzi.cn/bianma/zhalanmima.php

0x06 猪圈密码

以特定格子图案代替字母的一种密码

每个字母表示方法即为:

破解:

对照解码即可

0x07 摩斯密码

以点和划(即”.“ 和 ““)代表数字、字母、符号的一种密码

例如:

破解:

对照密码表翻译

或者利用在线网站翻译:http://www.zhongguosou.com/zonghe/moErSiCodeConverter.aspx

0x08 凯撒密码

它是一种代换密码,将明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。(这里默认字母表是一个循环,即Z后面是A)

例如:

还有两种类似凯撒加密的方式:单字母替换和多个偏移量替换

单字母替换:类似qwe密码,每个字母对应着另一个特定字母

多个偏移量:即维吉尼亚密码

加密过程如下:

破解:

单字母替换和维吉利亚密码:频率分析法(这是个体系,具体后续单独说明或读者自行Google)

凯撒密码:猜测偏移量手动破解或代码实现

或者利用在线网站破解:例如:http://www.zjslove.com/3.decode/

0x09 跳舞的小人密码

好像出自《福尔摩斯》

是一种类似猪圈密码的一种以图案代替字母的密码,不过本人没找到标准对应图,这里的图案由各种动作以及同种动作下举旗和不举旗的小人构成。

破解:

参照福尔摩斯破解方法

利用频率分析法(这是个体系,具体后续单独说明或读者自行Google)

0x0A 培根密码

类似用0和1代表字母的方法,然而这里没有用通常的0和1来表示,而是采用a和b来代替0和1.。

对照表如下:

注意:第二种方法u、v以及i、j是相同的加密方式

破解:

对照密码表

或根据对照表用代码实现解密

0x0B 键盘密码

破解:

对应坐标写出字符即可

0x0C jjencode/aaencode码

jjencode将JS代码转换成只有符号的字符串,aaencode可以将JS代码转换成常用的网络表情,也就是我们说的颜文字js加密。

解密:

直接在浏览器的控制台里输入密文即可执行解密。

0x0D Jsfuck/jothet码

将JavaScript 代码转为 ()[]{}!+ 字符的一种编码方式

破解:

直接在浏览器的控制台里输入密文即可执行解密。

0x0E Brainfuck码

以几种简单符号代替代码的编码方式

Brainfuck是一种极小化的计算机语言,按照”Turing complete(完整图灵机)”思想设计的语言,它的主要设计思路是:用最小的概念实现一种“简单”的语言,BrainF**k

语言只有八种符号,所有的操作都由这八种符号( >

破解:

可以利用在线网站破解:https://www.splitbrain.org/services/ook

0x0F Rot码

ROT5/13/18/47(类似特殊的凯撒密码)

ROT5/13/18/47是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取。

ROT5 是 ROTATE BY 5 PLACES 的简写,意思是旋转5个位置,其它皆同。

下面分别说说它们的编码方式:

ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。

ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。

ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。

ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母Z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体可参考ASCII编码,下面以ROT13以例。

破解:

利用在线网站破解:http://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php

0x10 希尔密码

希尔密码(Hill Cipher)是基于线性代数的一种多重代换密码。每个字母转换成26进制数字:A=0, B=1, C=2…Z=25一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果MOD26,将得出的n维向量再替换成字母。

例如:

破解:

利用在线网站破解:http://www.practicalcryptography.com/ciphers/hill-cipher/

明文攻击方式:http://www.practicalcryptography.com/cryptanalysis/stochastic-searching/cryptanalysis-hill-cipher/

0x11 文本加密

一种加密文本的方式

文本加密可以将正常文本内容打乱为不可连读的文字或符号(汉字 数字 字母 音乐符号 国际音标 盲文 韩文 日文 傣文 彝文 箭头符号 花朵符号 俄文),换行等格式信息也会被清除,达到加密的作用。在进行文本加密时可以设定一个密码,这样只有知道密码的人才能解密文本。密码可以是数字、字母和下划线,最多九位。

原文本:文本加密为汉字

加密后:渤筅苜锫舸擂懒认馁盲尻颛懒哨==

破解:

可以利用在线网站进行破解:http://www.qqxiuzi.cn/bianma/wenbenjiami.php

0x11 md5码 、Rsa加密、Des加密 等

此类密码比较系统,会单独具体说明

更新:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180305G0H12400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券