Base64介绍
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’。
Base64代码示例
jdk的工具包中就自带base64的工具类,使用base64的方法也非常简单,先新建一个工具类Base64Utils,代码如下:
base64是可逆的,因此上面包含了编码和解码的内容,使用非常简单,下面是测试类内容:
执行测试方法,结果如下:
可以看到base64非常简单。检验结果可以与网上现在工具结果对比:
Base58介绍
base58和base64一样是一种二进制转可视字符串的算法,主要用来转换大整数值。区别是,转换出来的字符串,去除了几个看起来会产生歧义的字符,如 0 (零), O (大写字母O), I (大写的字母i) and l (小写的字母L) ,和几个影响双击选择的字符,如/, +。结果字符集正好58个字符(包括9个数字,24个大写字母,25个小写字母)。不同的应用实现中,base58 最后查询的字母表可能不同,所以没有具体的标准。可以看出,base58是base64的一种人性化的版本,是站在使用者的角度考虑的。
Base58代码示例
新建一个Base58的工具类Base58Utils,工具类的大概内容结构如下:
因为jdk中没有现成的工具类,都是自己实现的,内容过多,可以通过下载源码查看,源码地址在底部。
下面是测试代码:
运行结果如下:
可以看到,base58的使用方法是一样的。