CTF密码学——常见编码及加密总结
做了一些CTF密码学的题目,阅读了很多大神的博客,现在做个总结,不全面的之后补充。
目录
编码
进制表示
十进制: 20 //decimal
八进制: 024 //octal
十六进制:0x14或者0X14 //hexadecimal
ASCII码对照表
Bin |
Oct |
Dec |
Hex |
缩写/字符 |
解释 |
(二进制) |
(八进制) |
(十进制) |
(十六进制) |
|
|
0000 0000 |
0 |
0 |
0x00 |
NUL(null) |
空字符 |
0000 0001 |
1 |
1 |
0x01 |
SOH(start of headline) |
标题开始 |
0000 0010 |
2 |
2 |
0x02 |
STX (start of text) |
正文开始 |
0000 0011 |
3 |
3 |
0x03 |
ETX (end of text) |
正文结束 |
0000 0100 |
4 |
4 |
0x04 |
EOT (end of transmission) |
传输结束 |
0000 0101 |
5 |
5 |
0x05 |
ENQ (enquiry) |
请求 |
0000 0110 |
6 |
6 |
0x06 |
ACK (acknowledge) |
收到通知 |
0000 0111 |
7 |
7 |
0x07 |
BEL (bell) |
响铃 |
0000 1000 |
10 |
8 |
0x08 |
BS (backspace) |
退格 |
0000 1001 |
11 |
9 |
0x09 |
HT (horizontal tab) |
水平制表符 |
0000 1010 |
12 |
10 |
0x0A |
LF (NL line feed, new line) |
换行键 |
0000 1011 |
13 |
11 |
0x0B |
VT (vertical tab) |
垂直制表符 |
0000 1100 |
14 |
12 |
0x0C |
FF (NP form feed, new page) |
换页键 |
0000 1101 |
15 |
13 |
0x0D |
CR (carriage return) |
回车键 |
0000 1110 |
16 |
14 |
0x0E |
SO (shift out) |
不用切换 |
0000 1111 |
17 |
15 |
0x0F |
SI (shift in) |
启用切换 |
0001 0000 |
20 |
16 |
0x10 |
DLE (data link escape) |
数据链路转义 |
0001 0001 |
21 |
17 |
0x11 |
DC1 (device control 1) |
设备控制1 |
0001 0010 |
22 |
18 |
0x12 |
DC2 (device control 2) |
设备控制2 |
0001 0011 |
23 |
19 |
0x13 |
DC3 (device control 3) |
设备控制3 |
0001 0100 |
24 |
20 |
0x14 |
DC4 (device control 4) |
设备控制4 |
0001 0101 |
25 |
21 |
0x15 |
NAK (negative acknowledge) |
拒绝接收 |
0001 0110 |
26 |
22 |
0x16 |
SYN (synchronous idle) |
同步空闲 |
0001 0111 |
27 |
23 |
0x17 |
ETB (end of trans. block) |
结束传输块 |
0001 1000 |
30 |
24 |
0x18 |
CAN (cancel) |
取消 |
0001 1001 |
31 |
25 |
0x19 |
EM (end of medium) |
媒介结束 |
0001 1010 |
32 |
26 |
0x1A |
SUB (substitute) |
代替 |
0001 1011 |
33 |
27 |
0x1B |
ESC (escape) |
换码(溢出) |
0001 1100 |
34 |
28 |
0x1C |
FS (file separator) |
文件分隔符 |
0001 1101 |
35 |
29 |
0x1D |
GS (group separator) |
分组符 |
0001 1110 |
36 |
30 |
0x1E |
RS (record separator) |
记录分隔符 |
0001 1111 |
37 |
31 |
0x1F |
US (unit separator) |
单元分隔符 |
0010 0000 |
40 |
32 |
0x20 |
(space) |
空格 |
0010 0001 |
41 |
33 |
0x21 |
! |
叹号 |
0010 0010 |
42 |
34 |
0x22 |
“ |
双引号 |
0010 0011 |
43 |
35 |
0x23 |
# |
井号 |
0010 0100 |
44 |
36 |
0x24 |
$ |
美元符 |
0010 0101 |
45 |
37 |
0x25 |
% |
百分号 |
0010 0110 |
46 |
38 |
0x26 |
& |
和号 |
0010 0111 |
47 |
39 |
0x27 |
\’ |
闭单引号 |
0010 1000 |
50 |
40 |
0x28 |
( |
开括号 |
0010 1001 |
51 |
41 |
0x29 |
) |
闭括号 |
0010 1010 |
52 |
42 |
0x2A |
* |
星号 |
0010 1011 |
53 |
43 |
0x2B |
+ |
加号 |
0010 1100 |
54 |
44 |
0x2C |
, |
逗号 |
0010 1101 |
55 |
45 |
0x2D |
– |
减号/破折号 |
0010 1110 |
56 |
46 |
0x2E |
. |
句号 |
0010 1111 |
57 |
47 |
0x2F |
/ |
斜杠 |
0011 0000 |
60 |
48 |
0x30 |
0 |
字符0 |
0011 0001 |
61 |
49 |
0x31 |
1 |
字符1 |
0011 0010 |
62 |
50 |
0x32 |
2 |
字符2 |
0011 0011 |
63 |
51 |
0x33 |
3 |
字符3 |
0011 0100 |
64 |
52 |
0x34 |
4 |
字符4 |
0011 0101 |
65 |
53 |
0x35 |
5 |
字符5 |
0011 0110 |
66 |
54 |
0x36 |
6 |
字符6 |
0011 0111 |
67 |
55 |
0x37 |
7 |
字符7 |
0011 1000 |
70 |
56 |
0x38 |
8 |
字符8 |
0011 1001 |
71 |
57 |
0x39 |
9 |
字符9 |
0011 1010 |
72 |
58 |
0x3A |
: |
冒号 |
0011 1011 |
73 |
59 |
0x3B |
; |
分号 |
0011 1100 |
74 |
60 |
0x3C |
< |
小于 |
0011 1101 |
75 |
61 |
0x3D |
= |
等号 |
0011 1110 |
76 |
62 |
0x3E |
> |
大于 |
0011 1111 |
77 |
63 |
0x3F |
? |
问号 |
0100 0000 |
100 |
64 |
0x40 |
@ |
电子邮件符号 |
0100 0001 |
101 |
65 |
0x41 |
A |
大写字母A |
0100 0010 |
102 |
66 |
0x42 |
B |
大写字母B |
0100 0011 |
103 |
67 |
0x43 |
C |
大写字母C |
0100 0100 |
104 |
68 |
0x44 |
D |
大写字母D |
0100 0101 |
105 |
69 |
0x45 |
E |
大写字母E |
0100 0110 |
106 |
70 |
0x46 |
F |
大写字母F |
0100 0111 |
107 |
71 |
0x47 |
G |
大写字母G |
0100 1000 |
110 |
72 |
0x48 |
H |
大写字母H |
0100 1001 |
111 |
73 |
0x49 |
I |
大写字母I |
1001010 |
112 |
74 |
0x4A |
J |
大写字母J |
0100 1011 |
113 |
75 |
0x4B |
K |
大写字母K |
0100 1100 |
114 |
76 |
0x4C |
L |
大写字母L |
0100 1101 |
115 |
77 |
0x4D |
M |
大写字母M |
0100 1110 |
116 |
78 |
0x4E |
N |
大写字母N |
0100 1111 |
117 |
79 |
0x4F |
O |
大写字母O |
0101 0000 |
120 |
80 |
0x50 |
P |
大写字母P |
0101 0001 |
121 |
81 |
0x51 |
Q |
大写字母Q |
0101 0010 |
122 |
82 |
0x52 |
R |
大写字母R |
0101 0011 |
123 |
83 |
0x53 |
S |
大写字母S |
0101 0100 |
124 |
84 |
0x54 |
T |
大写字母T |
0101 0101 |
125 |
85 |
0x55 |
U |
大写字母U |
0101 0110 |
126 |
86 |
0x56 |
V |
大写字母V |
0101 0111 |
127 |
87 |
0x57 |
W |
大写字母W |
0101 1000 |
130 |
88 |
0x58 |
X |
大写字母X |
0101 1001 |
131 |
89 |
0x59 |
Y |
大写字母Y |
0101 1010 |
132 |
90 |
0x5A |
Z |
大写字母Z |
0101 1011 |
133 |
91 |
0x5B |
[ |
开方括号 |
0101 1100 |
134 |
92 |
0x5C |
\ |
反斜杠 |
0101 1101 |
135 |
93 |
0x5D |
] |
闭方括号 |
0101 1110 |
136 |
94 |
0x5E |
^ |
脱字符 |
0101 1111 |
137 |
95 |
0x5F |
_ |
下划线 |
0110 0000 |
140 |
96 |
0x60 |
` |
开单引号 |
0110 0001 |
141 |
97 |
0x61 |
a |
小写字母a |
0110 0010 |
142 |
98 |
0x62 |
b |
小写字母b |
0110 0011 |
143 |
99 |
0x63 |
c |
小写字母c |
0110 0100 |
144 |
100 |
0x64 |
d |
小写字母d |
0110 0101 |
145 |
101 |
0x65 |
e |
小写字母e |
0110 0110 |
146 |
102 |
0x66 |
f |
小写字母f |
0110 0111 |
147 |
103 |
0x67 |
g |
小写字母g |
0110 1000 |
150 |
104 |
0x68 |
h |
小写字母h |
0110 1001 |
151 |
105 |
0x69 |
i |
小写字母i |
0110 1010 |
152 |
106 |
0x6A |
j |
小写字母j |
0110 1011 |
153 |
107 |
0x6B |
k |
小写字母k |
0110 1100 |
154 |
108 |
0x6C |
l |
小写字母l |
0110 1101 |
155 |
109 |
0x6D |
m |
小写字母m |
0110 1110 |
156 |
110 |
0x6E |
n |
小写字母n |
0110 1111 |
157 |
111 |
0x6F |
o |
小写字母o |
0111 0000 |
160 |
112 |
0x70 |
p |
小写字母p |
0111 0001 |
161 |
113 |
0x71 |
q |
小写字母q |
0111 0010 |
162 |
114 |
0x72 |
r |
小写字母r |
0111 0011 |
163 |
115 |
0x73 |
s |
小写字母s |
0111 0100 |
164 |
116 |
0x74 |
t |
小写字母t |
0111 0101 |
165 |
117 |
0x75 |
u |
小写字母u |
0111 0110 |
166 |
118 |
0x76 |
v |
小写字母v |
0111 0111 |
167 |
119 |
0x77 |
w |
小写字母w |
0111 1000 |
170 |
120 |
0x78 |
x |
小写字母x |
0111 1001 |
171 |
121 |
0x79 |
y |
小写字母y |
0111 1010 |
172 |
122 |
0x7A |
z |
小写字母z |
0111 1011 |
173 |
123 |
0x7B |
{ |
开花括号 |
0111 1100 |
174 |
124 |
0x7C |
| |
垂线 |
0111 1101 |
175 |
125 |
0x7D |
} |
闭花括号 |
0111 1110 |
176 |
126 |
0x7E |
~ |
波浪号 |
0111 1111 |
177 |
127 |
0x7F |
DEL (delete) |
删除 |
key或flag对应的ASCII
key |
107 101 121 |
KEY |
75 69 89 |
flag |
102 108 97 103 |
FLAG |
70 76 65 71 |
unicode编码
例如:原文本:You had me at hello
编码后\u0059\u006f\u0075\u0020\u0068\u0061\u0064\u0020\u006d\u0065\u0020\u0061\u0074\u0020\u0068\u0065\u006c\u006c\u006f
编码示例:
明文:hello
四种编码方式:
&#x [Hex]:hello
&# [Decimal]:hello
\U [Hex]:\U0068\U0065\U006C\U006C\U006F
\U+ [Hex]:\U+0068\U+0065\U+006C\U+006C\U+006F
URL编码
url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。编码方法很简单,在该字节ascii码的的16进制字符前面加%. 如 空格字符,ascii码是32,对应16进制是’20’,那么urlencode编码结果是:%20。
明文:睡觉
编码后:%e7%9d%a1%e8%a7%89
Escape/Unescape
Escape/Unescape加密解码/编码解码,又叫%u编码,采用UTF-16BE模式, Escape编码/加密,就是字符对应UTF-16 16进制表示方式前面加%u。Unescape解码/解密,就是去掉”%u”后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”。
unescape可转\141 \x61 \u9ED1
编码示例:
明文:睡觉
编码后:%u7761%u89c9
Base64
base64.b64decode()
转换表
下面附上base64_list ,对应第0-第63个字符,有时python脚本要使用
base64_list = [\’A\’, \’B\’, \’C\’, \’D\’, \’E\’, \’F\’, \’G\’, \’H\’, \’I\’, \’J\’, \’K\’, \’L\’, \’M\’, \’N\’, \’O\’, \’P\’,\’Q\’, \’R\’, \’S\’, \’T\’, \’U\’, \’V\’, \’W\’, \’X\’, \’Y\’, \’Z\’, \’a\’, \’b\’, \’c\’, \’d\’, \’e\’, \’f\’,\’g\’, \’h\’, \’i\’, \’j\’, \’k\’, \’l\’, \’m\’, \’n\’, \’o\’, \’p\’, \’q\’, \’r\’, \’s\’, \’t\’, \’u\’, \’v\’,\’w\’, \’x\’, \’y\’, \’z\’, \’0\’, \’1\’, \’2\’, \’3\’, \’4\’, \’5\’, \’6\’, \’7\’, \’8\’, \’9\’, \’+\’, \’/\’]
下面是base64原理,A 和BC的base64编码过程:
Base32对照表
范围:字母A-Z和数字2-7
Base16
base16中只有数字0-9以及大写字母ABCDEF
Base91
解码网站链接:http://ctf.ssleye.com
XXencode编码
编码示例:
明文:Be slow to promise and quick to perform.
编码后:cEaIUQqljRm-oPm-kQaxhOLBZ643iN0-lRKZXOm-oPm-kNL7aPr7h9U++
UUencode编码
编码实例:
明文:Be slow to promise and quick to perform.
编码后:[email protected]小于VQO=R!T;R!P小于F]M:7-E(&%N9″!Q=6EC:R!T;R!P97)F;W)[email protected]“
aaencode编码
编码示例:
明文:alert(“Hello, JavaScript”)
编码后:
ROT5/13/18/47编码
ROT5、ROT13、ROT18、ROT47 编码是一种简单的码元位置顺序替换暗码。此类编码具有可逆性,可以自我解密,主要用于应对快速浏览,或者是机器的读取,而不让其理解其意。
ROT5 是 rotate by 5 places 的简写,意思是旋转5个位置,其它皆同。下面分别说说它们的编码方式:
ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。
ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。
ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18(对数字5对,字母rot13)。
ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126
jother编码
8个字符 ! + ( ) [ ] { } 也是在console中运行就好,
这encode出来时字符串,不是js程序。
这个编码使用captfencoder软件就不行了
console中运行示例:
密码
栅栏密码
示例:
明文:栅栏密码加密规则示例
每组字数:5
按照字数先把明文分成:
栅栏密码加
密规则示例
先取每组第一个字:栅密
再取每组第二个字:栏规
密则
码示
加
最后得到“栅密栏规密则码示加例”。
解密则反推:
密文被分成2个字一组:
栅密
栏规
密则
码示
加例
先取每组第一个字:栅栏密码加
再取每组第二个字:密规则示例
最后得到“栅栏密码加密规则示例”
题目解密:
FOKLPLA
CGGODII
SSSDOOP
=>
FOK
LPL
ACG
GOD
IIS
SSD
OOP
=>
FLAGISOOPCOISOKLGDSDP
=>
FLAG IS OOPCOISOKLGDSDP
仿射密码
仿射密码是一种表单代换密码,字母表的每个字母相应的值使用一个简单的数学函数对应一个数值,再把对应数值转换成字母。
加密函数:E(x) = (ax + b) (mod m),a与m互质,b任意取,其中 a与m互质,m是编码系统中字母的个数(通常都是26)。
举个例子:
我们以 E(x)=(5x+8) mod 26函数为例子进行介绍,加密字符串为 AFFINECIPHER,这里我们直接采用字母表26个字母作为编码系统
密文就是IHHWVCSWFRCP。
解密过程:
1.先求解5关于模26的乘法逆元,为21
2.解密函数就是D(x) = 21(x – 8) mod 26
3.解密如下:
morse莫尔斯电码
摩斯电码不区分大小写,注意转换
对照表
morse与ascii对照表:
RSA
参数:
p、q |
个不相等的质数 |
n |
p和q的乘积 |
φ(n) |
(p-1)(q-1) |
e |
1< e < φ(n),且e与φ(n) 互质 |
d |
ed被φ(n)除的余数为1 |
n,e |
公钥 |
n, d |
私钥 |
m |
明文 |
c |
密文 |
**生成过程:
1.选择两个不相等的质数p和q。
爱丽丝选择了61和53。
p=61 q=53
(实际应用中,这两个质数越大,就越难**,即大数)
2.计算p和q的乘积n。
n = 61×53 = 3233
(n的长度就是**长度。3233写成二进制是110010100001,一共有12位,所以这个**就是12位。实际应用中,RSA**一般是1024位,重要场合则为2048位。
人类已经分解的最大整数(232个十进制位,768个二进制位)
3.计算n的欧拉函数φ(n)。
根据公式:
φ(n) = (p-1)(q-1)
φ(n)=60×52 为3120
(爱丽丝算出φ(3233)等于60×52,即3120)
4.随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
爱丽丝就在1到3120之间,随机选择了17。
(实际应用中,常常选择65537。)
5.计算e对于φ(n)的模反元素d。
所谓”模反元素”就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
ed ≡ 1 (mod φ(n))
这个式子等价于
ed – 1 = kφ(n)
于是,找到模反元素d,实质上就是对下面这个二元一次方程求解。
ex + φ(n)y = 1
已知 e=17, φ(n)=3120,
17x + 3120y = 1
这个方程可以用”扩展欧几里得算法”求解,此处省略具体过程。总之,爱丽丝算出一组整数解为 (x,y)=(2753,-15),即 d=2753。
至此所有计算完成。
6.将n和e封装成公钥,n和d封装成私钥。
在爱丽丝的例子中,n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)。
公钥:(n,e)
私钥:(n,d)
爱丽丝将公钥发送给我,我对信息加密,发送给爱丽丝后,爱丽丝利用手中的私钥解密。
加密和解密过程:
1.加密要用公钥钥(n,e)
假设鲍勃要向爱丽丝发送加密信息m,他就要用爱丽丝的公钥 (n,e) 对m进行加密。这里需要注意,m必须是整数(字符串可以取ascii值或unicode值),且m必须小于n。
所谓”加密”,就是算出下式的c:
爱丽丝的公钥是 (3233, 17),鲍勃的m假设是65,那么可以算出下面的等式:
6517 ≡ 2790 (mod 3233)
于是,c等于2790,鲍勃就把2790发给了爱丽丝。
m是明文,c是密文
2.解密要用私钥(n,d)
爱丽丝拿到鲍勃发来的2790以后,就用自己的私钥(3233, 2753) 进行解密。可以证明,下面的等式一定成立:
也就是说,c的d次方除以n的余数为m。现在,c等于2790,私钥是(3233, 2753),那么,爱丽丝算出
27902753 ≡ 65 (mod 3233)
因此,爱丽丝知道了鲍勃加密前的原文就是65。
至此,”加密–解密”的整个过程全部完成。
参考:
1.RSA算法原理(一)(二)
https://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
https://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
套路:
https://err0rzz.github.io/2017/11/14/CTF%E4%B8%ADRSA%E5%A5%97%E8%B7%AF/index.html
Ploybius 棋盘密码 波利比奥斯方阵
例题:04.Ploybius
Polybius Square Cipher波利比奥斯方阵密码
密文位数是明文2倍
下面横行为i 竖行为j eg.L:(3,1)
i,j |
1 |
2 |
3 |
4 |
5 |
1 |
A |
B |
C |
D |
E |
2 |
F |
G |
H |
I/J |
K |
3 |
L |
M |
N |
O |
P |
4 |
Q |
R |
S |
T |
U |
5 |
V |
W |
X |
Y |
Z |
普莱费尔密码 Playfair
(英文:Playfair cipher 或 Playfair square)
是一种使用一个关键词方格来加密字符对的加密法
例题:Cipher
步骤:
1.
编制密码表
**编成方阵
eg1:
**方阵并不确定,最常见就这两种,也有playfair zxwv。。。这种反着的
eg2:
2.
编写密文
最后编写密文。对明文加密规则如下:
1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应dc
2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应ku或uk。
如,依照上表,明文where there is life,there is hope.
可先整理为:WH ER ET HE RE IS LI FE TH ER EI SH OP EX
然后密文为:KU YO XD OL OY PL FK DL FU YO LG LN NG LY
将密文变成大写,然后几个字母一组排列。
如5个一组就是KUYOX DOLOY PLFKD LFUYO LGLNN GLY
3.
解密
Playfair解密算法首先将**填写在一个5*5的矩阵中(去Q留Z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文。
对密文解密规则如下:
1 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
2 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
3 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
其实就是反其道而行之。
维吉尼亚密码
例如,假设明文为:
ATTACKATDAWN
选择某一关键词并重复而得到**,如关键词为LEMON时,**为:
LEMONLEMONLE
对于明文的第一个字母A,对应**的第一个字母L,于是使用表格中L行字母表进行加密,得到密文第一个字母L。类似地,明文第二个字母为T,在表格中使用对应的E行进行加密,得到密文第二个字母X。以此类推,可以得到:
明文:ATTACKATDAWN
**:LEMONLEMONLE
密文:LXFOPVEFRNHR
用来加密解密的维吉尼亚表格:
曼彻斯特编码
IEEE形式的,每四位取1 3 位就可以得到原本的Data
得到data后对其二进制进行处理
例题:buuctf传感器
培根密码
一、培根密码加密方式
第一种方式:
A aaaaa B aaaab C aaaba D aaabb E aabaa F aabab G aabba H aabbb I abaaa J abaab
K ababa L ababb M abbaa N abbab O abbba P abbbb Q baaaa R baaab S baaba T baabb
U babaa V babab W babba X babbb Y bbaaa Z bbaab
第二种方式
a AAAAA g AABBA n ABBAA t BAABA
b AAAAB h AABBB o ABBAB u-v BAABB
c AAABA i-j ABAAA p ABBBA w BABAA
d AAABB k ABAAB q ABBBB x BABAB
e AABAA l ABABA r BAAAA y BABBA
f AABAB m ABABB s BAAAB z BABBB
二、举例
例1、 baabaaabbbabaaabbaaaaaaaaabbabaaaabaaaaaabaaabaabaaaabaabbbaabbbaababb
baaba aabbb abaaa bbaaa aaaaa abbab aaaab aaaaa abaaa baaba aaaba abbba abbba ababb
s h i y a n b a i s c o o l
例2、明文是LOVE,用“随意选取句子和文”加密,得到密文就是“SuLyi XuanQ uJuZi HEwEN”(这里用大写字母代表a,小写字母代表b)
这里,加密者使用两种不同字体,准备好一篇包含相同ab字数的假信息后,即两种字体分别代表a型和b型。然后假信息中的每个字母按字体来决定其代表“a”还是“b”。
SuLyi XuanQ uJuZi HEwEN
ababbabbbabababaabaa
例3、明文:now is a good t………
n o w i s a g o o d t
abbaa abbab babaa abaaa baaab aaaaa aabba abbab abbab aaabb baaba
密文:BOWED ASTER PINED JOKED THEIR BLACK HASTE ARRAY INSET CHEST SLING
加密规则:(1)a-m -> a ,也就是说 a ——m 的所有字母都能替换成 a。
n-z -> b ,也就是说 n ——z 的所有字母都能替换成 b。
(2)a-m <- a ,也就是说 a 可以替换 a——m 中的任何一个字母。
n-z <- a ,也就是说 b 可以替换 n——z 中的任何一个字母。
Ps:密文中的单词都是根据加密规则随便拼凑出来的,为了使加密更隐蔽,一般拼凑出来的单词可连成通顺的一句话
jsfuck
JSFuck 可以让你只用 6 个字符 []()!+ 来编写 JavaScript 程序。
jsfuck一种表示js的语言,直接在console中运行就好
captfencoder可离线跑
例题:web5
找不到线索,只有一堆括号什么的
找wp,用google的console输入这串符号,火狐的还用不了,复制不进去
需要看图对照的
元音密码
元音密码表:
下面就可以对信息进行加密了 比如明文是:
When in Rome,do as the Romans do.(入乡随俗)
根据密码表加密为(注意,数字之间加点): 52.23.2.35.3.35.43.4.34.2.13.4.1.44.45.2.43.4.34.1.35.44.13.4
六十甲子
键盘密码
例题:告诉你个秘密
当铺密码:
当铺密码就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。例如:
口 0 田 0 由 1 中 2 人 3 工 4
大 5 王 6 夫 7 井 8 羊 9
猪圈密码
传统:
变种1:
变种2:
圣堂武士密码
银河标准字母
跳舞的小人
来自夏洛克福尔摩
斯在《归来记》中侦探案件使用的一种加密方式。
需要网站解密的
新佛曰
解密网址:
http://hi.pcmoe.net/buddha.html
諸壽隸僧壽降吽壽諸壽陀壽摩隸僧缽薩願心壽咤壽囉寂壽闍諸壽哆壽慧壽聞壽色吽愍壽所壽蜜如
gemlovecom
OoK!加密
也有脚本可解密
样子:
解密网站:
https://www.splitbrain.org/services/ook
brainfuck加密
八种符号(> < + – . , [ ]),也有脚本可解密
样子:
解密网站:
https://tool.bugku.com/brainfuck/
Quoted-printable
Quoted-printable将任何8-bit字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值。
例如,ASCII码换页符(十进制值为12)可以表示为”=0C”, 等号”=”(十进制值为61)必须表示为”=3D”,gb2312下“中”表示为=D6=D0。除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式。
notepad++和captfencode偶尔能解,但遇到中文=D6=D0就不会了
解码网站:
Rabbit
rabbit加密有base64显示形式和hex显示形式,然后密文不唯一,
例如对一个Cute_Rabbit加密有很多种密文:
U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
U2FsdGVkX18RWTkternW9o4I+lRGrqHAjGN9
U2FsdGVkX1/pfkxaegi0iXaw89BiLrZIXCxs
解密网站:
http://tool.chinaz.com/Tools/TextEncrypt.aspx
可使用 MTracer正则测试.exe 跳转到解密网站
加密效验算法
MD5
需要网站碰撞 cmd5网站
由a-z A-Z 0-9组成
有16位的也有32位的
md5需要**的例题:
buuctf:
丢失的MD5
rot
还原大师
sha1
sha1(asdfafasdf)= 1366ed1868270a692348291cc90f4a40c126bf4d