-
-
[分享]Base64编码算法
-
发表于: 2020-8-7 18:09 1849
-
1、Base64编码的原理
(1)Base64是什么
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来 表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。
(2)Base64的使用场所
Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数 据。包括MIME的email、在XML中存储复杂数据。
(3)Base64的原理
Base64可以将ASCII字符串或者是二进制编码成只包含A—Z,a—z,0—9,+, / 这64个字符( 26个大写字母,26个小写字母,10个数字,1个+,一个 / 刚好64个字符)。这64个字符用6个bit位就可以全部表示出来,一个字节 有8个bit 位,那么还剩下两个bit位,这两个bit位用0来补充。其实,一 个Base64字符仍然是8个bit位,但是有效部分只有右边的6个 bit,左边 两个永远是0。
Base64的编码规则是将3个8位字节(3×8=24位)编码成4个6位的字节(4×6=24位),之后在每个6位字节前面,补充两个0,形成4个8位字节的形式,那么取值范围就变成了0~63。又因为2的6次方等于64,所以每6个位组成一个单元。
2、Eclipse中Base64算法实现
首先新建一个工程,添加主程序
使用jdk中给我们提供的包,直接输入Base64,会给我们导包:
使用jdk中给我们提供的包,直接输入Base64,会给我们导包:
继续使用decode方法对编码的结果进行解码输出:
注意,这里decode的返回值是byte[]字节数组,所以需要new String
进行类型转换。
本课小结
1、介绍base64的编码原理。
2、演示base64编码和解码的例子
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
- [转帖]无需脱壳抓取软件加密包方法(逆向破解) 10704
- [分享]Android逆向——RSA加密算法 4110
- [原创]普通协议(HTTP)与安全协议(HTTPS) 3997
- [转帖]Android App加固原理与技术历程 4185
- [分享]实战分析人X的HTTP协议 5281