base64编码介绍 其它编码介绍 数据校验算法介绍
- 2015-08-24 22:22:00
- admin
- 原创 1930
base64编码把3个8位字节转化为4个6位字节,在6位前面补充两个0,形成8位一个字节形式,如果剩下的字符不足3个字节,则用0填充,输出字符使用等号,因此输出的文本末尾可能会出现1到2个等号。保证输出的内容都是可读字符,base64制定了编码表进行统一转换,编码表的大小为2^6=64,这也是base64名称的由来。
编码说明:
1、编码字符:小写字母、大写字母、所有数字、特殊字符2个[+ /];
2、输出字符:编码字符以及等号;
3、编码解码工具:base64 myfile | base64 -d
4、在线编码:https://ctf.bugku.com/tool/base64
org.apache.commons.codec.binary.Base64编码解码方法:
1、encodeBase64(final byte[] binaryData)
2、encodeBase64(final byte[] binaryData, final boolean isChunked)
3、encodeBase64(final byte[] binaryData, final boolean isChunked, final boolean urlSafe)
4、encodeBase64String(final byte[] binaryData)
5、encodeBase64URLSafeString(final byte[] binaryData)
6、decodeBase64(final byte[] base64Data)
7、decodeBase64(final String base64String)
方法参数说明:
1、isChunked为true,每行输出76个字符进行换行;
2、urlSafe为true,- 会替换+, _会替换/;
代码示例:
public static void testBase64() {
byte[] bytes = {(byte)0xFF, (byte)0xFF, (byte)0xFF, (byte)0xFF};
byte[] base64 = Base64.encodeBase64(bytes);
System.out.println(new String(base64));
System.out.println(Arrays.toString(Base64.decodeBase64(base64)));
}
代码输出:
/////w==
[-1, -1, -1, -1]
二、其它编码介绍
1、base85、base91包含特殊字符较多,base85不包含2个特殊字符[~ |];
2、base58、base62、base64包含小写字母,base62编码整数后长度减少,base64补齐时会输出等号;
3、base32、base36不包含小写字母,base32补齐时会输出等号,base36很少被使用;
4、不同平台同一种算法编码规则可能不一样;
base91编码:
1、使用94个可见ASCII字符中的91个字符进行编码;
2、使用13比特数据编码出2个字符,不用进行补齐;
3、编码效率最高,空间浪费最低;
4、在线编码,不参与编码字符[~ ` "]:http://www.metools.info/code/base91.html
5、在线编码,不参与编码字符[~ ` "]:https://ctf.bugku.com/tool/base91
6、在线编码,不参与编码字符[- \ ']:http://www.atoolbox.net/Tool.php?Id=935
base32编码:
1、编码字符:大写字母,数字2-7;
2、输出字符:编码字符以及等号;
3、在线编码:https://ctf.bugku.com/tool/base32
4、在线编码:http://www.atoolbox.net/Tool.php?Id=931
base36编码:
1、编码字符:大写字母,所有数字;
2、相比base62优势不明显,所以很少被使用;
base58编码:
1、编码字符比base62减少4个字符,包括0、大写O、大写I、小写l;
2、用于生成区块链钱包地址,上面4个字符不容易区分,所以被排除;
3、在线编码:https://ctf.bugku.com/tool/base58
4、在线编码:http://www.atoolbox.net/Tool.php?Id=932
base62编码:
1、编码字符:小写字母、大写字母、所有数字;
2、编码整数后长度减少,适合生成短链接或识别码;
3、在线编码整数,编码后长度变短:https://ctf.bugku.com/tool/base62
4、在线编码文本,编码后长度变长:http://www.atoolbox.net/Tool.php?Id=933
base85编码:
1、使用85个可见ASCII字符对文本内容进行编码,不参与编码字符包含[~ |];
2、PDF文件使用base85编码图片;
3、在线编码:https://ctf.bugku.com/tool/base85
4、在线编码:http://www.atoolbox.net/Tool.php?Id=934
base100编码:
1、使用100个Emoji表情符号对文本内容进行编码;
2、在线编码:https://ctf.bugku.com/tool/base100
3、在线编码:http://www.atoolbox.net/Tool.php?Id=936
三、数据校验算法介绍
1、CRC,循环冗余校验,一般对较小数据校验,常用于通信校验;
2、MD5,哈希计算,一般对大量数据校验,常用于数据签名;