概述
文章目录
- 常见编码
- ASCII
- base64/32/16编码
- base64
- base32/16
- shellcode
- Quoted-printable编码(只针对于非英文)
- XXencode编码
- UUencode编码
- URL编码(%编码)
- Unicode编码
- Escape/UNescape编码
- 敲击码
- 莫尔斯电码(Morse Code)
- ROT 5/13/18/47
- 变形
- JSfuck
- brainfuck编码
常见编码
ASCII
ASCII非打印控制字符(0-31,127)
ASCII打印字符
扩展ASCII打印字符
base64/32/16编码
定义
base64、base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32,64分别表示用多少个字符来编码,常用的为base64。Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。
base64
编码原理
Base64编码要求把3个8位字节转化为4个6位的字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的6次方是64,这也是为什么是64个字符(A-Z,a-z,0-9,+,l这64个编码字符,=号不属于编码字符,而是填充字符)的原因,这样就需要一张映射表
若三位一组分组时不足三位:
差一位:转二进制时后面补8个0,对应base64码为‘=’
一个’='可以隐藏2bit信息
差两位:转二进制时后面补16个0,对应base64码为‘==’
两个’='隐藏4bit信息
base32/16
编码原理
base32就是用32(2的5次方)个特定ASCII码来表示256个ASCII码。所以,5个ASCIl字符经过base32编码后会变为8个字符(公约数为40),长度增加3/5,不足8n用“=”补足。
base16就是用16(2的4次方)个特定ASCII码表示256个ASCII字符。1个ASCIl字符经过base16编码后会变为2个字符,长度增加一倍。不足2n用“=”补足
base16实际上也是十六进制转换
与base64类似,base32使用32个可见字符进行编码,2的5次方为32,所以每5bit为1个分组。5字节为40bit,对应于8个base32分组,即5个字节用8个base32中字符来表示。但如果不足5个字节,则会先对第一个不足5bit的分组用0补足了5bit,对后面剩余分组全部使用“=”填充,直到补满5个字节。由此可知,base32最多只有6个等号出现
shellcode
源文本:The quick brown fox jumps over the lazy dog
编码后:
×54×68×65×20×71×75×69x63x6b×20×62×72×6f×77x6ex20×66x6f×78×20×6a×75x6d×70×73×20×6f×76x65×72×20×74x68x65×20×6cx61×7ax79×20x64x6fx67
解码:本质还是解十六进制
Quoted-printable编码(只针对于非英文)
源文本:敏捷的棕色狐狸跳过了懒惰的狗
编码后:
=E6=95=8F=E6=8D=B7=E7=9A=84=E6=A3=95=E8=89=B2=E7=8B=90=E7=8B=B8=E8=B7=B3=E8=BF=87=E4=BA=86=E6=87=92=E6=83=BO=E7=9A=84=E7=8B=97
http: // www.mxcz.net/tools/QuotedPrintable.aspx
- 编码原理
- 任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值.例如,ASCII码换页符(十进制值为12)可以表示为”=0C”,等号”=”(十进制值为61)必须表示为”=3D”.除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式.
- 所有可打印ASCII字符(十进制值的范围为33到126)可用ASCII字符编码来直接表示,但是等号”=”(十进制值为61)不可以这样直接表示.ASCII的水平制表符(tab)与空格符,十进制为9和32,如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为"=09″(tab)或"=20″(space).
XXencode编码
简介:
XXencode将输入文本以每三个字节为单位进行编码。如果最后剩下的资料少于三个字节,不够的部份用零补齐。这三个字节共有24个Bit,以6bit为单位分为4个组,每个组以十进制来表示所出现的数值只会落在0到63之间。以所对应值的位置字符代替。它所选择的可打印字符一共64个字符。跟base64打印字符相比,就是XXencode多一个“-”字符,少一个”/”
字符:+- 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
源文本:Thequickbrownfoxjumpsoverthelazydog
编码后:hJ4VZ653pOKBf647mPrRi64NjS0-eRKpkQm-jRaJm65FcNG-gMLdt64FjNk++
UUencode编码
简介:
UUencode是一种二进制到文字的编码,最早在unix邮件系统中使用,全称:Unix-to-Unix encoding,UUencode将输入文本以每三个字节为单位进行编码,如果最后剩下的资料少于三个字节,不够的部份用零补齐。三个字节共有24个Bit,以6-bit为单位分为4个组,每个组以十进制来表示所出现的字节的数值。这个数值只会落在0到63之间。然后将每个数加上32,所产生的结果刚好落在ASCIl字符集中可打印字符(32-空白…95-底线)的范围之中
特点:没有特点,一串乱码但都在可打印字符范围内
源文本:Thequickbrownfoxjumpsoverthelazydog
编码后:M5&AE('%U:6-K(&)R;W=N(&9O>"!J=6UP<R!O=F5R('1H92!L87IY(&1O9PH*
URL编码(%编码)
本质ASCII编码的十六进制前加%
Unicode编码
Unicode码扩展自ASCIl字元集。在严格的ASCIl中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符,比如汉字"经"的编码是0x7ECF
特征 &,#
http: //www.mxcz.net/tools/Unicode.aspx
Escape/UNescape编码
简介:
Escape/Unescape加密解码/编码解码,又叫%u编码,采用UTF-16BE模式,Escape编码/加密,就是字符对应UTF-1616进制表示方式前面加%u。Unescape解码/解密,就是去掉“%u“后,将16进制字符还原后,由utf-16转码到自己目标字符。如:字符“中”,UTF-16BE是:“6d93”,因此Escape是“%u6d93”。
举例:
源文本:The
编码后:%u0054%u0068%u0065
敲击码
简介
敲击码(Tap code)是一种以非常简单的方式对文本信息进行编码的方法。
因该编码对信息通过使用一系列的点击声音来编码而命名,敲击码是基于5×5方格波利比奥斯方阵来实现的,不同点是是用K字母被整合到C中。
莫尔斯电码(Morse Code)
简介:
莫尔斯电码(Morse Code)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它的代码组成:
点(.)
划(一)
每个字符间短的停顿(通常用空格表示停顿)
每个词之间中等的停顿(通常用/划分)
以及句子之间长的停顿
摩斯电码一定是有分隔的
源文本:THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG
编码后:-...../--.-..-..-.-.-.-/-....-.---.---./..-.----..-/.---..---.--..../---...-..-./-...../.-...---..-.--/-..-----.
对应表
ROT 5/13/18/47
简介
-
ROT 5/13/18/47是一种简单的码元位置顺序替换密码
-
ROT 5只对数字进行加密,用当前数字往前数用第5个数字替接当前数字
-
ROT 13只对字母进行加密,用当前字母往前数用第13个字母替换当前字母
-
ROT 18将ROT5和ROT13组合一起
-
ROT 47对数字、字母、常用符号进行编码,按照它们的ASCl值进行位置誉换,用当前字符ASC1|值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号。用于ROT47编码的字符其ASCII值范图是33一126,具体可参考ASCll编码。
举例:ROT13
明文:thequickbrownfoxjumpsoverthelazydog
密文:gurdhvpxoebjasbkwhzcfbiregurynmlqbt
变形
JSfuck
JSFuck只使用6种字符
[ ] ! ( ) +
来书写任何Javascript代码。当然,用这种方式写出来的代码会很长。JSFuck不需要依赖浏览器,也可以在Node.JS上运行。
不是一一对应
brainfuck编码
Brainfuck加密,brainfuck又被称为brainf**k或者BF,brainfuck语言用
< > + - . ,[ ]
八种符号来替换C语言的各种语法和命令,具体规则如下:
特点
加号多,五位一组
变形:Ook
OoK. Ook! Ook?
再变:short Ook
再Ook基础上删去Ook,并且可以删去并排列入一行中
如果感到本篇文章对你有帮助的话,请动动小手给与醉着鼓励吧
点赞收藏加关注,一键三连不迷路!
最后
以上就是活泼黑夜为你收集整理的部分常见编码常见编码变形的全部内容,希望文章能够帮你解决部分常见编码常见编码变形所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复