package test;
import java.io.IOException;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class TestBase64 {
public static void main(String[] args) {
String str = "huxiao中文@%……&#%&*324234";
System.out.println("--------------");
System.out.println(encode(str));
System.out.println(encode(str).length());
System.out.println(decode(encode(str)));
System.out.println(decode(encode(str)).length());
System.out.println("--------------");
System.out.println(encode2(str));
System.out.println(encode2(str).length());
System.out.println(decode2(encode2(str)));
System.out.println(decode2(encode2(str)).length());
System.out.println("--------------");
}
public static String encode(String str){
return new BASE64Encoder().encode(str.getBytes());
}
public static String decode(String str) {
try {
return new String(new BASE64Decoder().decodeBuffer(str));
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("base64解码错误");
}
}
/**
* description: 使用commons-codec加密<br>
* @param str
* @return
* 2010-4-9
* @author huxiao kskr@qq.com
*/
public static String encode2(String str) {
return new String(new Base64().encode(str.getBytes()));
}
/**
* description: 使用commons-codec解密<br>
* @param str
* @return
* 2010-4-9
* @author huxiao kskr@qq.com
*/
public static String decode2(String str) {
return new String(new Base64().decode(str.getBytes()));
}
}
--------------------------------------------------
输出为
--------------
aHV4aWFv1tDOxEAloa2hrSYjJSYqMzI0MjM0
36
huxiao中文@%……&#%&*324234
23
--------------
aHV4aWFv1tDOxEAloa2hrSYjJSYqMzI0MjM0
38
huxiao中文@%……&#%&*324234
23
--------------
用commons-codec加密的是38个字节,多出了两个字节,实际上应该是换行符,并没有影响解密后的值