网安入门第三篇 MISC中常见的编码 篇章一

目录

ASCII

定义

Base64编码

原理

应用

URL编码

定义

URL编码遵循下列规则


  • ASCII

定义

所有的数据在存储和运算时都要使用二进制数表示, 一个标准ASCII码用一字节来表示,使用7位二进制数来表示所有大小写字母及常见符号,一共127个字符,余下一位在标准ASCII中用于奇偶校验位。

0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)

32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字

65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符

在标准ASCII基础上还有扩展ASCII码,扩展的ASCII码将奇偶校验位用于确定附加的特殊符号

  • Base64编码

原理

基于64个字符的编码方式【A-Z,a-z,0-9,+,/】,通常以三个ASCII码(3x8 bit)为一组,然后将每一组转化为4个6bit的字节(4x6bit), 并在每个6 bit字节前填上两个高位0,形成4个8 bit 字节,将每个8 bit字节对照BASE64 编码表进行编码得到最后的Base64字节编码。

当被编码字符不是8bit,如中文字符时,不能采用base64 ;

当被编码字符长度不是3的倍数时,以0补齐到3的倍数,输出的Base64编码对应的输出字符为“=”,如当被编码字符余下一个时,最后输出字符有两个=;当被编码字符余下两个时,最后输出字符尾部有一个=。

应用

Base64编码可用于在HTTP环境下传递较长的标识信息,此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

 

然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符

 

为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

此外还有一些变种,它们将“+/”改为“-”或“.”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“:”(用于XML中的Name)

      

       在python中可以通过标准库函数进行base64的编码和译码

import base64

test="Hello Python !"

test_encode=base64.encodebytes(test.encode('utf-8'))

print(test_encode)

test_decode=base64.decodebytes(test_encode)

print(test_decode)
  • URL编码

定义

url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。

 

URL编码遵循下列规则

每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。

任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。

常用的URL编码对照表

ASCII Value

URL-encode

ASCII Value

URL-encode

ASCII Value

URL-encode

æ

%00

0

%30

`

%60

 

%01

1

%31

a

%61

 

%02

2

%32

b

%62

 

%03

3

%33

c

%63

 

%04

4

%34

d

%64

 

%05

5

%35

e

%65

 

%06

6

%36

f

%66

 

%07

7

%37

g

%67

backspace

%08

8

%38

h

%68

tab

%09

9

%39

i

%69

linefeed

%0a

:

%3a

j

%6a

 

%0b

;

%3b

k

%6b

 

%0c

<

%3c

l

%6c

c return

%0d

=

%3d

m

%6d

 

%0e

>

%3e

n

%6e

 

%0f

?

%3f

o

%6f

 

%10

@

%40

p

%70

 

%11

A

%41

q

%71

 

%12

B

%42

r

%72

 

%13

C

%43

s

%73

 

%14

D

%44

t

%74

 

%15

E

%45

u

%75

 

%16

F

%46

v

%76

 

%17

G

%47

w

%77

 

%18

H

%48

x

%78

 

%19

I

%49

y

%79

 

%1a

J

%4a

z

%7a

 

%1b

K

%4b

{

%7b

 

%1c

L

%4c

|

%7c

 

%1d

M

%4d

}

%7d

 

%1e

N

%4e

~

%7e

 

%1f

O

%4f

 

%7f

space

%20

P

%50

%80

!

%21

Q

%51

 

%81

"

%22

R

%52

%82

#

%23

S

%53

ƒ

%83

$

%24

T

%54

%84

%

%25

U

%55

%85

&

%26

V

%56

%86

'

%27

W

%57

%87

(

%28

X

%58

ˆ

%88

)

%29

Y

%59

%89

*

%2a

Z

%5a

Š

%8a

+

%2b

[

%5b

%8b

,

%2c

\

%5c

Œ

%8c

-

%2d

]

%5d

 

%8d

.

%2e

^

%5e

Ž

%8e

/

%2f

_

%5f

 

%8f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值