该博客打算简单介绍下Base64编码以及在java环境下的两种编程使用(sun公司提供的jar和apache提供的jar)//不过我这里是建议大家使用apache提供的BASE64的jar,因为sun内部API sun.misc.BASE64在编译时会出现后期可能被删除的潜在风险警告。所以,大家看着办把…….
该篇博客目录
1、Base64编码示例
2、Base64算法定义
3、Base64两种编程使用(sun.misc.BASE64和commons-codec)实现(编码解码工具类)
一、Base64编码示例
可以百度Base64编码,会有在线编辑器,可以看出明文“hello”经过Base64编码得到密文“aGVsbG8=”
下面是Base64编码表(密钥)
二、Base64算法定义
Base64是一种基于64个字符的编码算法,从任意8位字节序列组合的描述形式,这种形式不易直接识别,经过Base64编码后的字符串的字符数是以4为单位的整数倍
三、Base64两种编程使用(sun.misc.BASE64和commons-codec)(编码解码工具类)
1、sun.misc.BASE64.jar下
Base64编解码工具类BaseUtil
package Base64Demo;import java.io.IOException;import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;
/**基于"JDK"用法 */
public class Base64Util {/** 加密过程(编码) * 1、创建BASE64Encoder对象——en* 2、调用该对象的encode方法(将一个字节数组的明文进行编码转换为一个字符串)* 3、返回字符串* Tip:记得先将明文转换为字节数组 */public static String EncodeBase64(byte[] data) {BASE64Encoder en=new BASE64Encoder();String str=en.encode(data);return str;}/**解密过程(解码) *1、创建BASE64Decoder对象*2、调用该对象的decodeBuffer方法(将编码后的字符串转换为明文的字节数组)*3、将明文字节数组转换为相应的字符串*4、返回字符串*/public static String DecodeBase64(String data) throws IOException {BASE64Decoder de=new BASE64Decoder();byte[] ResultByte=de.decodeBuffer(data);String str=new String(ResultByte);return str;}
}
测试类
package Base64Demo;import java.io.IOException;import Decoder.BASE64Encoder;public class Base64Demo01 {public static final String DATA="hello";public static void main(String[] args) throws IOException {byte[] data=DATA.getBytes();String BaseResult=Base64Util.EncodeBase64(data);System.out.println("加密后:"+BaseResult);String str=BaseResult;String BaseResult_D=Base64Util.DecodeBase64(str);System.out.println("解密后:"+BaseResult_D);}}
2、commons-codec-1.11.jar下
- 将commons-codec-1.11.jar包add path
Base64编解码工具类BaseUtil_cc
package Base64Demo;import org.apache.commons.codec.binary.Base64;
/**基于commons-codec-1.11 */public class Base64Utile_cc {/**加密过程 */public static String EncodeBase64(byte[] data){Base64 en=new Base64();String str=en.encodeBase64String(data);return str;}/**解密过程 */public static String DecodeBase64(String str) {Base64 de=new Base64();byte[] ResultBase=de.decodeBase64(str);String str2=new String(ResultBase);return str2;}}
测试类
package Base64Demo;public class Base64Demo02 {public static final String DATA="hello";public static void main(String[] args) {/**基于commons-codec-1.11 */byte[] data=DATA.getBytes();String str=Base64Utile_cc.EncodeBase64(data);System.out.println("加密后:"+str);String str2=Base64Utile_cc.DecodeBase64(str);System.out.println("解密后:"+str2);}}
相应结果和第一种方法是相同的
当然还有其他的jar包可以用,这里就不多做阐述了。