Base64字符映射表:
上面的是Base64的字符映射表。
URL Base64的某些方面有别于Base64,它不需要定义每行字符数及行末回车换行符。同时,根据URL相关要求,符号“+”和符号“/”是不允许出现在URL中的,于是采用“-”和“_”符号取代。也就是说在上图的Base64字符映射表中 Value 63 对应的Encoding变成了“-”,Value 63 对应的Encoding变成了“_”。
同样,在URL中,符号“=”用作参数分隔符,所以也是不合法的。“=”在Base64中用作填充符,如果需要定长的Base64编码串,也姐需要相应的代替符号。Bouncy Castle和Commons Codec都实现了UrlBase64算法,不同的是Bouncy Castle使用“.”作为填充符,而Commons Codec直接放弃了填充符,使用不定长UrlBase64编码。
1、Bouncy Castle的实现和应用
import java.io.UnsupportedEncodingException;
import org.bouncycastle.util.encoders.UrlBase64;
/**
* 封装Base64的工具类
*
*/
class UrlBase64Coder2{
public final static String ENCODING="UTF-8";
//加密
public static String encoded(String data) throws Unsu