在base64进行编码时,如果要通过http请求,则会出现丢失数据的现象;实际是url中传输,需要注意+/符号,这2个符号有时会引起一些异常。可以使用Commons Codec实现
代码原创地址:http://blog.youkuaiyun.com/lonelyroamer/article/details/7638435
import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
/**
* 封装Base64的工具类
*/
class UrlBase64Coder {
public final static String ENCODING = "UTF-8";
// 加密
public static String encoded(String data) throws UnsupportedEncodingException {
byte[] b = Base64.encodeBase64URLSafe(data.getBytes(ENCODING));
return new String(b, ENCODING);
}
// 解密
public static String decode(String data) throws UnsupportedEncodingException {
byte[] b = Base64.decodeBase64(data.getBytes(ENCODING));
return new String(b, ENCODING);
}
}
/**
* 测试类
*/
public class UrlBase64Test {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "Ad31";
// 加密该字符串
String encodedString = UrlBase64Coder.encoded(str);
System.out.println(encodedString);
// 解密该字符串
String decodedString = UrlBase64Coder.decode(encodedString);
System.out.println(decodedString);
}
}