字母表编码:
用数字1-26或者0-25来编码范围为A-Z/a-z字母字符,字母不区分大小写。
进制编码:
主要是各进制之间的转换 二进制数,只有01两个字符 八进制数,0开头,用[0-7] 8个字符表示 十六进制数,0x开头,[0-9,a-f ]等十六个个字符表示 。
ASCII编码:
用1个字节的8位数来编码英文字符集,即所有字母数字等英文符号可以用二进制数、十进制、十六进制来表示。比如大写字母A可分别用二进制数(01000001)、十进制(65)、十六进制(0x41)来表示。
GBK/GBK2312编码:
用2个字节16比特的16进制数表示来编码中文字符集,其中GBK是GBK2312的扩展字符集编码,包含简体、繁体中文、日语、韩语等。比如斗哥斗对应的GBK和GBK2312为B6B7。
unicode编码:
国际标准字符,将全球的各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台文本信息的转换,当编码和解码的字符集出现不一致的时候就会出现乱码。 unicode一般有四种表示形式 &#x [Hex]: The &# [Decimal]: The \U [Hex]: \U0054\U0068\U0065 \U+ [Hex]: \U+0054\U+0068\U+0065。
URL编码:一个字符ascii码的十六进制,然后在前面加上%
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息
base64编码:
1.标准base64只有64个字符(英文大小写、数字和+、/)以及用作后缀等号;
2. base64是把3个字节变成4个可打印字符,所以base64编码后的字符串一定能被4整除(不算用作后缀的等号);
3.等号一定用作后缀,且数目一定是0个、1个或2个。这是因为如果原文长度不能被3整除,base64要在后面添加\0凑齐3n位。为了正确还原,添加了几个\0就加上几个等号。显然添加等号的数目只能是0、1或2;
(1)首先看有没有符号,base64和base32都以’=‘作为空白补足符符号,如果结尾没有’='有可能是base16。如果出现了+和/,那么一定是base64。
(2)然后看大小写字母,如果有大写有小写就一定是base64。如果全是大写的情况就看具体字母有没有F之后的字母出现,因为base16就是16进制,字母部分只到F。当然这个base32的数字部分只有2-7,不过数字一般不好判断,所以这里不推荐用数字进行判断。
总结:辨别不了就用最笨的方法,复制编码到解码工具上一个一个试。总能试出来。
注:ctfshow中web的签到题便是这样一道题,ctrl+F12就会看到一串base64编码,用在线工具转一下。
base36:密文由36个字符(0-9,a-z)组成,加密仅支持整数数字,解密仅支持字符串,不支持中文 密文由36个字符(0-9,A-Z)。
base58:特征特点: Base58是用于Bitcoin中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址,Base58不使用数字”0”,字母大写”O”,字母大写”I”,和字母小写”l”,以及”+”和”/”符号 。
base62:密文由62字符(0-9,a-z,A-Z)组成。
base91:密文由91个字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~”)组成。
栅栏密码是一种简单的移动字符位置的加密方法,加密前后的字符数不变。
栅栏密码的加密方式:把文本按照一定的字数分成多个组,取每组第一个字连起来得到密文1,再取每组第二个字连起来得到密文2……最后把密文1、密文2……连成整段密文。
曲路密码(Curve Cipher)是一种换位密码,需要事先约定填充的行列数(也就是曲路路径)
目前在刷题过程中没用遇到过很不常见的编码,主要还是常见的编码
参考https://blog.csdn.net/dyw_666666/article/details/89973048
https://www.cnblogs.com/liuzeyu12a/p/9902769.html