import org.bouncycastle.util.encoders.Base64;//Bouncy Castle开源包
public class Base64Code {
public final static String ENCODING = "UTF-8" ; //以3个字节表示汉字
public static String encode(String data) throws Exception{
//加密
byte [] b=Base64.encode(data.getBytes( ENCODING )); //返回编码格式为“UTF-8”的字节数组
return new String(b, ENCODING ); //构造一个新的编码格式为“UTF-8"的字符串
}
public static String decode(String data) throws Exception{
//执行解码
byte [] b=Base64.decode(data.getBytes( ENCODING ));
return new String(b, ENCODING );
}
}
import static org.junit.Assert.*;//测试包
public class test{
public final static void main(String[] args) throws Exception{
String inputStr= "Java加密与解密艺术" ;
System. out .println( "原文:\t" +inputStr);
//进行Base64编码
String code=Base64Code. encode(inputStr);
System. out .println( "编码后:\t" +code);
//Base64解码
String outputStr=Base64Code. decode(code);
System. out .println( "解码后:\t" +outputStr);
//验证Base64编码解码一致性
assertEquals(inputStr,outputStr);
}
/*
* 原文: Java加密与解密艺术
编码后: SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
解码后: Java加密与解密艺术
* */
}
Commons Codec开源包,加/解密
import org.apache.commons.codec.binary.Base64; //apache开元包,commons Codec
public class Commons_Base64 {
public static final String Encoding = "UTF-8" ;
public static String encode(String data) throws Exception{
byte [] b=Base64.encodeBase64(data.getBytes( Encoding ));
return new String(b, Encoding );
}
//安全加密
public static String encodeSafe(String data) throws Exception{
byte [] b= Base64.encodeBase64(data.getBytes( Encoding ), true );
return new String(b, Encoding );
}
public static String decode(String data) throws Exception{
byte [] b=Base64.decodeBase64(data.getBytes( Encoding ));
return new String(b, Encoding );
}
}
import static org.junit.Assert.*;
public class test{
public final static void main(String[] args) throws Exception{
String inputStr= "Java加密与解密艺术" ;
System. out .println( "原文:\t" +inputStr);
//base64加密
String encode=Commons_Base64. encode(inputStr);
System. out .println( "编码后:\t" +encode);
//base64安全加密
String encodeSage=Commons_Base64. encodeSafe(inputStr);
System. out .println( "安全加密后:\t" +encodeSage);
//base64解码
String outputStrSafe=Commons_Base64. decode(encodeSage);
String outputStr=Commons_Base64. decode(encode);
System. out .println( "安全解码:\t" +outputStrSafe);
System. out .println( "解码:\t" +outputStr);
//验证一致性
assertEquals(inputStr,outputStr);
}
/*
* 原文: Java加密与解密艺术
编码后: SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
安全加密后: SmF2YeWKoOWvhuS4juino+WvhuiJuuacrw==
安全解码: Java加密与解密艺术
解码: Java加密与解密艺术
*
* */
}
关于“安全加密”的区别:调试如下:
安全加密的字符串后有"\r\n",换行符。
从输出结果中也可以发现多了一个换行。