java----Base64编码与解码简单应用

Base64是一种能将任意内容使用64个字符组合成字符串的方法,同时他们之间可以进行相互转化。

一般使用Base64有三种方法:
1、通过导入sun.misc.BASE64Decoder.jar 来使用其中的类BASE64Decoder和BASE64Encoder

                                            但是这种方法的编码和解码的效率并不好,而且基本上已经停止更新了。

 2、通过Apache Commons Codec来进行编码和解码 ,但是仍然需要导入org.apache.commons.codec.binary.Base64

3、使用java.util套件中,新增了Base64的类别,效率比sun.misc.BASE64Decoder.jar要高出许多,而且并不需要导入其他的jar包

下面就简单的来实现对他们的实现

一、使用sun.misc.BASE64Decoder.jar(使用BaseEncode和BaseDecoder内封装的方法)

package base;

import java.io.IOException;

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;

public class Baseutils {
	
	  public static String encryptBase64(byte[] data)
	  {
		  return new BASE64Encoder().encode(data)
				  ;
	  }
	  //将所传入的字节数组进行加密
	  public static String  decryptBase64(String data) throws IOException
	  {
		  byte[] resultBytes=new BASE64Decoder().decodeBuffer(data);
		  return new String(resultBytes);
		  
	  }

}

调用:

package base;

import java.io.IOException;


public class Demo1 {  
	public static final String Data="yangdidilove";
	public static void main(String[] args) throws IOException {
		String base64Result=Baseutils.encryptBase64(Data.getBytes());
		//对传入的字符串进行base64的转化
		System.out.println(Data+" .>>>>Base64编码>>>>"+base64Result);
		String base64String=Baseutils.decryptBase64(base64Result);
		System.out.println(base64Result+"  >>>>Base64解码>>>>"+base64String);
	}

}

实现结果:

yangdidilove .>>>>Base64编码>>>>eWFuZ2RpZGlsb3Zl
eWFuZ2RpZGlsb3Zl  >>>>Base64解码>>>>yangdidilove

二、使用Apache Commons Codec(创建Base对象,并使用内的方法)

package base;

import java.io.UnsupportedEncodingException;

import org.apache.commons.codec.binary.Base64;

public class ApacheDemo {
 public static void main(String[] args) throws UnsupportedEncodingException {
	 Base64 base64=new Base64();
	 //创建binary.Base64对象
	 String text="那个,我想对你说";
	 byte[] textByte=text.getBytes("UTF-8");
    
	  String encodeText=base64.encodeAsString(textByte);
	  //编码
	  System.out.println("编码的结果为"+encodeText);
	 String decodeText1=new String(base64.decode(encodeText),"utf-8");
	 System.out.println("解码的结果"+decodeText1);
	
	
}
}

实现结果:

编码的结果为6YKj5LiqLOaIkeaDs+WvueS9oOivtA==
解码的结果那个,我想对你说

 

三、使用新增了Base64的类别(创建Decoder和Encoder)

package base;

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.*;
import java.util.Base64.Decoder;

public class Java_internal_base64 {
public static void main(String[] args) throws UnsupportedEncodingException {
	 Decoder decoder=Base64.getDecoder();
	 Encoder encoder=Base64.getEncoder();
	String text = "那个,我想对你说";
	byte[] bs=text.getBytes("UTF-8");
	//编码
	String encodedText=encoder.encodeToString(bs);
	System.out.println("编码后的结果为            "+encodedText);
	//解码
	 String string=new String(  decoder.decode(encodedText),"UTF-8");
	 System.out.println("解码后的结果为(也就是结果)      "+string);
	
	


}
}

实现结果:

编码后的结果为            6YKj5LiqLOaIkeaDs+WvueS9oOivtA==
解码后的结果为(也就是结果)      那个,我想对你说

四、编码其他信息(sao)

  

package base;

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.*;
import java.util.Base64.Decoder;

public class Java_internal_base64 {
public static void main(String[] args) throws UnsupportedEncodingException {
	 Decoder decoder=Base64.getDecoder();
	 Encoder encoder=Base64.getEncoder();
	String text = "\n那个,我想对你说:\n即使跟你说一句话我都觉得很开心,但是我不知道该怎样表达我对你的感觉.\n扬弟弟会努力的变成一座山给你依靠";
	byte[] bs=text.getBytes("UTF-8");
	//编码
	String encodedText=encoder.encodeToString(bs);
	System.out.println("编码后的结果为            "+encodedText);
	//解码
	 String string=new String(  decoder.decode(encodedText),"UTF-8");
	 System.out.println("解码后的结果为     "+string);
	
	


}
}

实现结果:

编码后的结果为            CumCo+S4qizmiJHmg7Plr7nkvaDor7Q6CuWNs+S9v+i3n+S9oOivtOS4gOWPpeivneaIkemDveinieW+l+W+iOW8gOW/gyzkvYbmmK/miJHkuI3nn6XpgZPor6XmgI7moLfooajovr7miJHlr7nkvaDnmoTmhJ/op4kuCuaJrOW8n+W8n+S8muWKquWKm+eahOWPmOaIkOS4gOW6p+Wxsee7meS9oOS+nemdoA==
解码后的结果为     
那个,我想对你说:
即使跟你说一句话我都觉得很开心,但是我不知道该怎样表达我对你的感觉.
扬弟弟会努力的变成一座山给你依靠

五、效率测试

package base;

import java.io.IOException;


public class Demo1 {  
	public static final String Data="\n那个,我想对你说:\n即使跟你说一句话我都觉得很开心,但是我不知道该怎样表达我对你的感觉.\n扬弟弟会努力的变成一座山给你依靠";
	public static void main(String[] args) throws IOException {
		long start=System.currentTimeMillis();
		for(int i=0;i<1000;i++)
		{
		String base64Result=Baseutils.encryptBase64(Data.getBytes());
		String base64String=Baseutils.decryptBase64(base64Result);
	   }
		long end=System.currentTimeMillis();
		System.out.println("运行时间"+(end-start));
	}

}

结果:

运行时间186

另一个:

package base;

import java.io.UnsupportedEncodingException;
import java.util.Base64;
import java.util.Base64.*;
import java.util.Base64.Decoder;
import java.util.logging.Logger;

public class Java_internal_base64 {
public static void main(String[] args) throws UnsupportedEncodingException {
	 Decoder decoder=Base64.getDecoder();
	 Encoder encoder=Base64.getEncoder();
	String text = "\n那个,我想对你说:\n即使跟你说一句话我都觉得很开心,但是我不知道该怎样表达我对你的感觉.\n扬弟弟会努力的变成一座山给你依靠";
	byte[] bs=text.getBytes("UTF-8");
	//编码
	long start=System.currentTimeMillis();
	for(int i=0;i<1000;i++)
	{
	String encodedText=encoder.encodeToString(bs);
	//解码
	 String string=new String(  decoder.decode(encodedText),"UTF-8");
	}
	long end=System.currentTimeMillis();
	System.out.println("运行时间"+(end-start));
	


}
}

结果:

运行时间35

 

你可能感兴趣的:(java)