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包
下面就简单的来实现对他们的实现
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
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==
解码的结果那个,我想对你说
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==
解码后的结果为(也就是结果) 那个,我想对你说
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