base64编码介绍 其它编码介绍 数据校验算法介绍

2015-08-24 22:22:00
admin
原创 1930
摘要:base64编码介绍 其它编码介绍 数据校验算法介绍
一、base64编码介绍

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,哈希计算,一般对大量数据校验,常用于数据签名;

发表评论
评论通过审核之后才会显示。