常見(jiàn)編碼
軟件開(kāi)發(fā)中常常碰到各種編碼轉換,下面介紹下常用的幾種編碼格式。
Unicode編碼Escape/Unescape編碼HTML實(shí)體編碼ASCII編碼Base64/32/16編碼shellcode編碼Quoted-printable編碼UUencode編碼URL編碼
Unicode編碼
Unicode 是一種全球字符編碼標準,簡(jiǎn)化了軟件本地化并改進(jìn)了多語(yǔ)言文本處理。 最常用的如UTF-8,UTF-16等.。詳見(jiàn):https://www.unicode.org/standard/standard.html。
Escape/Unescape編碼
Escape/Unescape加密解碼/編碼解碼,又叫%u編碼,采用UTF-16BE模式,Escape編碼/加密,就是字符對應UTF-16 16進(jìn)制表示方式前面加%u。
Unescape解碼/解密,就是去掉%u后,將16進(jìn)制字符還原后,由utf-16轉碼到自己目標字符。
如:字符中,UTF-16BE是:6d93,因此Escape是%u6d93。
HTML實(shí)體編碼
以連字符號(&)打頭、以分號(;)結尾的字符串。用以顯示不可見(jiàn)字符及保留字符(如 HTML 標簽)。
如用 表示空格。
ASCII編碼
最廣泛的符號編碼,用7個(gè)比特組成,用十進(jìn)制中0~127表示對應十六進(jìn)制0x00~0x7F,每個(gè)值對應一個(gè)字符。
Base64/32/16編碼
程序員都不陌生了,最常見(jiàn)的編碼之一。
shellcode編碼
shellcode為16進(jìn)制的機器碼,因為經(jīng)常讓攻擊者獲得shell而得名。shellcode常常使用機器語(yǔ)言編寫(xiě)。
Quoted-printable編碼
可打印字符引用編碼,多用途互聯(lián)網(wǎng)郵件擴展(MIME)一種實(shí)現方式,一般在郵件頭可見(jiàn)。任何一個(gè)8位的字節可被編碼為3個(gè)字符:一個(gè)等號后跟隨兩個(gè)十六進(jìn)制(0-9或A-F)表示該字節的數值。
UUencode編碼
uuencode 編碼方式用于將任意的二進(jìn)制文件轉換為文本文件,比如email.轉換后的文件中僅包含可打印字符。
uuencode 運算法則將連續的 3字節編碼轉換成 4字節(8-bit 到 6-bit)的可打印字符。
URL編碼
將需要轉碼的字符轉為16進(jìn)制,然后從右到左,取4位(不足4位直接處理),每2位做一位,前面加上%,編碼成%XY格式。
比如:空格ASCII碼是32,對應16進(jìn)制是20,那么urlencode編碼結果是:%20
編碼特征總結
名稱(chēng)
例子
特征總結
URL編碼
%3D%231a
百分號,無(wú)百分號長(cháng)度%2=0,只對符號中文用
Quoted-printable
=E5=9C
等號+hex
Base64
MTIxMg==
大小寫(xiě)一串,可能有=+
HTML實(shí)體
lt和gl等常見(jiàn),參考實(shí)體表
UNICODE/Escape
u52a0u5bc6/%u00a0%u0068
U是特點(diǎn),而且4位
UU編碼
M5&AE(%U:6-K(&)R;W=N(&9O>
(‘%&*這類(lèi)特殊字符,32-35之間的ASCII