凯撒密码
采用替换加密的技术,将明文中所有字母在字母表上向后(或向前)按照一个固定数目进行偏移后被替换为密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
明文字母表:ABCDEFGHIJKLMNOPQRSTUVWXYZ ;
密文字母表:DEFGHIJKLMNOPQRSTUVWXYZABC。
根据偏移量的不同,还存在若干特定的恺撒密码名称:
-
偏移量为10:Avocat(A→K)
-
偏移量为13:ROT13
-
偏移量为-5:Cassis (K 6)
-
偏移量为-6:Cassette (K 7)
云影密码(幂数加密)
1,2,4,8这四个数字,可以通过加法来表示0-9中的任何一个数字,例如0=28, 也就是0=2+8,同理7=124, 9=18。之后再用1-26来表示26个英文字母,就有了密文与明文之间的对应关系。引入0来作为间隔,以免出现混乱。所以云影密码又叫“01248密码”。
例:
密文:8842101220480224404014224202480122
23——5——12——12——4——15——14——5
明文:W——E——L——L——D——O——N——E
希尔密码(Hill Cipher)
希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。
每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。
注意用作加密的矩阵(即密匙)在必须是可逆的,否则就不可能解码。只有矩阵的行列式和26互质,才是可逆的。
题目可能会给出密文,解密矩阵和A的值
例:https://ctf.bugku.com/challenges/detail/id/169.html
培根密码
加密时,明文中的每个字母都会转换成一组五个英文字母。其转换依靠下表:
加密者需使用两种不同字体,分别代表A和B。准备好一篇包含相同AB字数的假信息后,按照密文格式化假信息,即依密文中每个字母是A还是B分别套用两种字体。
抓住重点:“两种不同字体”,如大小写、加粗和未加粗、正斜体等都有可能是培根密码,要适当有点想象力(说我自己)。
维吉尼亚密码
维吉尼亚密码是使用一系列偏移量不同的凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
为了生成密码,需要使用表格法表格。这一表格包括了26行字母表,每一行都由前一行向左偏移一位得到。具体使用哪一行字母表进行编译是基于密钥进行的,在过程中会不断地变换。
例如明文为:Iamsohappy
密钥为:zxc
则对应的密文为:Hxorljzmrx
棋盘密码
12——B,34——O,24——I/J(这里要注意),非常的简单
变种(又称ADFGX密码):
对应法则与上面的一样。
猪圈密码(共济会密码)
变种1:
变种2:
没什么好说的,记就完了。
例题:跳转提示
下载得到一个很怪的东西
根据最后的等号猜测是base64编码,因为题目明示了是猪圈密码,所以应该是base64转图片
再对照上面的表flag就出来了 。
栅栏密码
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
例:
加密
明文:THE LONGEST DAY MUST HAVE AN END
1、把将要传递的信息中的字母交替排成上下两行(即是分为两组)。
T E O G S D Y U T A E N N
H L N E T A M S H V A E D (T、H为一组,E、L为一组......)
2、将下面一行字母排在上面一行的后边。
密文:TEOGSDYUTAENN HLNETAMSHVAED
解密
先将密文分为两行
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再按上下上下的顺序组合成一句话
明文:THE LONGEST DAY MUST HAVE AN END
(以上来自百度百科)
例题:跳转提示
很明显是两个一组的栅栏密码,复制到在线解密网站就完事了。
ASCll
ASCII 码使用指定的7 位或8位二进制数组合来表示128 或256 种可能的字符z。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符
。其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
题目中的数字若在0到127的范围内可以试试ASCII
base64
Base64就是一种基于64个可打印字符来表示二进制数据的方法,用0~9和A~F表示
例:Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9
在线解码后得到cyberpeace{Welcome_to_new_World!}
摩尔斯电码
摩尔斯电码由两种符号表示,分别是“·”和“-”。
下面是一道例题,链接:跳转提示
..-./.-../.-/--./----.--/-../...--/..-./-.-./-.../..-./.----/--.../..-./----./...--/----./----./...../-----/....-/-----.-
这种就是典型的摩尔斯电码,只需将/换成空格就可以在在线网站上解密了。
Ook!编码
例题:跳转提示
这东西长得很有特点,由Ook和! . ?三种标点组成(可能没有Ook只有标点,此时密文被称为Short Ook),遇到直接复制在线解密就行了。
brainfuck编码
Brainfuck是一个深奥的编程语言,通过 Urban Müller于1993年创建的,值得注意的是它的极致简约。
该语言仅包含八个简单命令和一个指令指针。
虽然它完全是图灵完整的,但它并不是供实际使用的,而只是挑战和娱乐程序员。
Brainfuck只需要将命令分解为微观步骤即可。该语言的名称是对brain语“ brainfuck”的引用,它指的是如此复杂或异常的事物,以至于超出了他们的理解范围。(摘自维基百科)
例题:跳转提示
这种题也是在线解密,不用怎么考虑。