您的位置:首页 > 编程语言 > Java开发

Java加密与解密学习记录02-Base64

2017-05-31 15:02 381 查看

概述

Base64编码,是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用作电子邮件标准)中一种可打印字符表示二进制数据的常见编码方法!它其实只是定义用可打印字符传输内容一种方法,并不会产生新的字符集!有时候,我们学习转换的思路后,我们其实也可以结合自己的实际需要,构造一些自己接口定义编码方式。好了,我们一起看看,它的转换思路吧!

Base64实现转换原理

它是用64个可打印字符表示二进制所有数据方法。由于2的6次方等于64,所以可以用每6个位元为一个单元,对应某个可打印字符。我们知道三个字节有24个位元,就可以刚好对应于4个Base64单元,即3个字节需要用4个Base64的可打印字符来表示。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中一般有所不同。但是,我们经常所说的Base64另外2个字符是:“+/”。这64个字符,所对应表如下。



转换步骤

1)将给定的字符串转换成对应的字符编码(如:GBK、UTF-8)

2)将获得该字符编码转换成二进制码

3)对获得的二进制码进行分组操作

第一步:每3个字节(8位二进制)为一组,一共24个二进制位

第二步:将这个24个二进制位分成4组,每个组有6个二进制位,不足6位的,后面补0。

第三步:在每个组前面加两个0,这样每个组就又变成了8位,即每个组一个字节,4个组就4个字节了。

第四步:根据Base64的转码表找到每个字节对应的符号,这个符号就是Base64的编码值

经过Base64编码后的字符串的字符数一定是4的整数倍。在使用Base64编码时,如果得到的字符数不为4的整数倍,则后面使用等号 ‘=’补足

Java中的实现

Java版Base64编码和解码实现:

使用Apache的org.apache.commons.codec.binary.Base64类

//Base64编码
String str = new String(Base64.encodeBase64("中国".getBytes("utf-8")) ,"utf-8");
System.out.println(str);

//Base64编码,对输出结果中,每76个字符追加一个回车换行符
String str = new String(Base64.encodeBase64("中国".getBytes("utf-8") ,true) ,"utf-8");
System.out.println(str);

//Base64解码
String str2 = new String(Base64.decodeBase64(str.getBytes("utf-8")) ,"utf-8");
System.out.println(str2);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  base64 加密 解密