区块链学习(05)BASE64 & BASE58

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的使用方法是一样的。



项目代码:https://gitee.com/blueses/btc-demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容