CTF密码学——常见编解码及加解密总结

       做了一些CTF密码学的题目,阅读了很多大神的博客,现在做个总结,不全面的之后补充。

目录

编码

进制表示

ASCII码对照表

unicode编码

URL编码

Escape/Unescape

Base64

Base32对照表

Base16

Base91

XXencode编码

UUencode编码

aaencode编码

ROT5/13/18/47编码

jother编码

密码

栅栏密码

仿射密码

morse莫尔斯电码

RSA

Ploybius 棋盘密码 波利比奥斯方阵

普莱费尔密码 Playfair

维吉尼亚密码

曼彻斯特编码

培根密码

jsfuck

需要看图对照的

元音密码

六十甲子

键盘密码

当铺密码:

猪圈密码

跳舞的小人

需要网站解密的

新佛曰

OoK!加密

brainfuck加密

Quoted-printable

Rabbit

加密效验算法

MD5

sha1

CRC


编码

进制表示

十进制:   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()

转换表

CTF密码学——常见编解码及加解密总结_第1张图片

下面附上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编码过程:

CTF密码学——常见编解码及加解密总结_第2张图片

 

Base32对照表

范围:字母A-Z和数字2-7

CTF密码学——常见编解码及加解密总结_第3张图片

 

Base16

base16中只有数字0-9以及大写字母ABCDEF

CTF密码学——常见编解码及加解密总结_第4张图片

Base91

解码网站链接:http://ctf.ssleye.com

CTF密码学——常见编解码及加解密总结_第5张图片

XXencode编码

编码示例:

明文:Be slow to promise and quick to perform.

编码后:cEaIUQqljRm-oPm-kQaxhOLBZ643iN0-lRKZXOm-oPm-kNL7aPr7h9U++

 

UUencode编码

编码实例:

明文:Be slow to promise and quick to perform.

编码后:H0F4@小于VQO=R!T;R!P小于F]M:7-E(&%N9"!Q=6EC:R!T;R!P97)F;W)M+@``

 

aaencode编码

编码示例:

明文:alert(“Hello, JavaScript”)

编码后:

CTF密码学——常见编解码及加解密总结_第6张图片

 

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)。

CTF密码学——常见编解码及加解密总结_第7张图片

举个例子:

我们以 E(x)=(5x+8) mod 26函数为例子进行介绍,加密字符串为 AFFINECIPHER,这里我们直接采用字母表26个字母作为编码系统

CTF密码学——常见编解码及加解密总结_第8张图片

密文就是IHHWVCSWFRCP。

解密过程:

1.先求解5关于模26的乘法逆元,为21

2.解密函数就是D(x) = 21(x - 8) mod 26

3.解密如下:

CTF密码学——常见编解码及加解密总结_第9张图片

morse莫尔斯电码

摩斯电码不区分大小写,注意转换

对照表

CTF密码学——常见编解码及加解密总结_第10张图片

morse与ascii对照表:

CTF密码学——常见编解码及加解密总结_第11张图片

 

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.选择两个不相等的质数pq

爱丽丝选择了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:

CTF密码学——常见编解码及加解密总结_第12张图片

密钥方阵并不确定,最常见就这两种,也有playfair zxwv。。。这种反着的

eg2:

CTF密码学——常见编解码及加解密总结_第13张图片

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

CTF密码学——常见编解码及加解密总结_第14张图片

用来加密解密的维吉尼亚表格:

CTF密码学——常见编解码及加解密总结_第15张图片

 

曼彻斯特编码

 

CTF密码学——常见编解码及加解密总结_第16张图片

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

CTF密码学——常见编解码及加解密总结_第17张图片

例2、明文是LOVE,用“随意选取句子和文”加密,得到密文就是“SuLyi XuanQ uJuZi HEwEN”(这里用大写字母代表a,小写字母代表b)

这里,加密者使用两种不同字体,准备好一篇包含相同ab字数的假信息后,即两种字体分别代表a型和b型。然后假信息中的每个字母按字体来决定其代表“a”还是“b”。

 

    SuLyi  XuanQ uJuZi HEwEN

 

    ababbabbbabababaabaa

CTF密码学——常见编解码及加解密总结_第18张图片

 

例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输入这串符号,火狐的还用不了,复制不进去

 

需要看图对照的

元音密码

元音密码表:

CTF密码学——常见编解码及加解密总结_第19张图片

 

下面就可以对信息进行加密了 比如明文是:

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

 

六十甲子

CTF密码学——常见编解码及加解密总结_第20张图片

CTF密码学——常见编解码及加解密总结_第21张图片

键盘密码

例题:告诉你个秘密

 

 

当铺密码:

当铺密码就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。例如:

口 0 田 0 由 1 中 2 人 3 工 4

大 5 王 6 夫 7 井 8 羊 9

 

 

猪圈密码

传统:

CTF密码学——常见编解码及加解密总结_第22张图片

CTF密码学——常见编解码及加解密总结_第23张图片

变种1:

CTF密码学——常见编解码及加解密总结_第24张图片

变种2:

CTF密码学——常见编解码及加解密总结_第25张图片

CTF密码学——常见编解码及加解密总结_第26张图片

 

圣堂武士密码

 

银河标准字母

CTF密码学——常见编解码及加解密总结_第27张图片

跳舞的小人

来自夏洛克福尔摩

斯在《归来记》中侦探案件使用的一种加密方式。

CTF密码学——常见编解码及加解密总结_第28张图片

需要网站解密的

 

新佛曰

解密网址:

http://hi.pcmoe.net/buddha.html

諸壽隸僧壽降吽壽諸壽陀壽摩隸僧缽薩願心壽咤壽囉寂壽闍諸壽哆壽慧壽聞壽色吽愍壽所壽蜜如

gemlovecom

 

OoK!加密

也有脚本可解密

样子:

CTF密码学——常见编解码及加解密总结_第29张图片

解密网站:

https://www.splitbrain.org/services/ook

brainfuck加密

八种符号(> < + - . , [ ]),也有脚本可解密

CTF密码学——常见编解码及加解密总结_第30张图片

样子:

解密网站:

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就不会了

解码网站:

http://ctf.ssleye.com/

 

 

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

 

CRC

你可能感兴趣的:(CTF,加密解密,base64,编码,unescape,RSA)