编码(未全)

编码

ASCII

Amerrican Strandard Code for Information Interchange:美国信息交换标准代码,包括英文、符号等。

基本的 ASCII 字符集共有 128 个字符,其中有 96 个可打印字符,包括常用的字母、数字、标点符号等,

标准ASCII使用1个字节存储一个字符,首位是0,总共可表示128个字符。

如:空格SPACE 是32(二进制:00100000);

数字0 是48(二进制:00110000);

大写字母A 是65(二进制:01000001)。

另外还有 32 个控制字符(不能打印出来)。

特征: 只含有数字

  • 0-9, 49-57
  • A-Z, 65-90
  • a-z, 97-122

例:

明文:hello,world.
十六进制:0x680x650x6c0x6c0x6f0xff0c0x770x6f0x720x6c0x640x2e
十进制:1041011081081112551211911111410810046
二进制:011010000110010101101100011011000110111100101100011101110110111101110010011011000110010000101110

GBK

  • 汉字内码扩展规范,国标

  • 汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。

  • 注意:GBK兼容了ASCII字符集。

    GBK规定:汉字的第一个字节的第一位必需是1

    1xxxxxxx xxxxxxxx 0xxxxxxxx 1xxxxxxx xxxxxxxx
    

Unicode字符集(统一码)

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。
它用两个字节来编码一个字符,字符编码一般用十六进制来表示.

UTF-32:4个字节表示一个字符(占空间、通讯效率低)

UTF-8(编码):

  1. 是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。
    1. 英文字符、数字等只占1个字节,汉字字符占用3个字节。

举例:

Unicode有以下四种编码方式:

明文:hello,world.

highlighter- HTML

&#x [hex]:hello,world.

&# [hex]:hello,world.

\u [hex]:\U0068\U0065\U006C\U006C\U006F\U002C\U0077\U006F\U0072\U006C\U0064\U002E

\u+ [hex]:\U+0068\U+0065\U+006C\U+006C\U+006F\U+FF0C\U+0077\U+006F\U+0072\U+006C\U+0064\

base

Base16编码是将二进制文件转换成由16个字符组成的文本

base32的编码表是由(A-Z、2-7)32个可见字符构成,“=”符号用作后缀填充。

base64的编码表是由(A-Z、a-z、0-9、+、/)64个可见字符构成,“=”符号用作后缀填充。

base58的编码表相比base64少了数字0,大写字母I,O,小写字母 l (这个是L),以及符号‘+’和‘/’

base91的密文由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~”)组成

Base100编码/解码工具(又名:Emoji表情符号编码/解码),可将文本内容编码为Emoji表情符号;同时也可以将编码后的Emoji表情符号内容解码为文本。

例:

明文:hello,world.123456
base16: 68656C6C6F2C776F726C642E313233343635
特征:大写字母(A-Z)和数字(0-9),不用‘=’补齐。
base32: NBSWY3DPFR3W64TMMQXDCMRTGQ3DK===
特征:大写字母(A-Z)和数字(2-7),不满5的倍数,用‘=’补齐。
base64: aGVsbG8sd29ybGQuMTIzNDY1
特征:大小写字母(A-Z,a-z)和数字(0-9)以及特殊字符‘+’,‘/’,不满3的倍数,用‘=’补齐。
base58: 2smDFYXWKE8vc8XA8dadEYcSqcQb
特征:相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号,最主要的是后面不会出现'='。
base85: BOu!rDst>tGAhM<A1fSl1GgsI
特征:特点是奇怪的字符比较多,但是很难出现等号
明文:hello,world.123456
base91: TPwJh>go2Tv!_,aRA2IbLmA
特征:由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~”)组成
不支持中文。
base100: 👟👜👣👣👦📦💳💃👮👦👩👣👛🐥🐨🐩🐪🐫🐬🐭
特征:就是一堆Emoji表情

URL编码

特征:

编码前面都有%

空格 %20

Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割,如/s?q=abc& ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进行转义,也就是对其进行编码。

哪些字符需要编码

Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。

MD5

定义:

一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,字母大小写统一

特征:

有固定长度,一般是32位或者16位

由数字“0-9”和字母“a-f”组成

明文:hello,world.123456
md5(hello,world.123456,32) = 5189503aae1b1c0a6fbf7ea9e3128ab0
md5(hello,world.123456,16) = ae1b1c0a6fbf7ea9

使用在线工具加解密

SHA1

特征:

编码前面都有%

举例:

明文:hello,world.123456
sha1(hello,world.123456)= 0179303b8f08fbc3d16cd23a4be5828790e12375

AES、DES、RC4、Rabbit、3DES型加密

简述:

以上都是非对称性加密算法,就是引入了密钥,密文特征与Base64类似

scape、Unescape编码(%u)

简述:

Escape/Unescape加密解码/编码解码,又叫%u编码,其实就是字符对应UTF-16 16进制表示方式前面加%u。Unescape解码/解密,就是去掉"%u"后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”,反之也一样!

举例:

明文:hello,world.
密文:%u0068%u0065%u006c%u006c%u006f%uff0c%u0077%u006f%u0072%u006c%u0064%u002e

还有很多编码目前阶段没有涉及,等日后再补充。

posted @ 2023-09-12 00:16  飞越三万尺  阅读(38)  评论(0编辑  收藏  举报