import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.net.URLEncoder;

import org.apache.log4j.Logger;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

public class URLDoBase64 {

private static final Logger LOG = Logger.getLogger(URLDoBase64.class);

/**

* 对base64编码的字符进行编码处理,以便于http传播 处理规则 ? (AAA) & (BBB) = (CCC) / (DDD) , (EEE) + (FFF) % (GGG) <

* (HHH) > (III) # (JJJ)

*

@param str

@return

*/

public static String enURL(String str) {

String sbase64=null;

try {

sbase64 = Base64.encode(str.getBytes("UTF-8"));

catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return sbase64.replaceAll("\\?", "\\(AAA\\)").replaceAll("&", "\\(BBB\\)").replaceAll("=", "\\(CCC\\)").replaceAll("\\/", "\\(DDD\\)").replaceAll(",", "\\(EEE\\)").replaceAll("\\+", "\\(FFF\\)").replaceAll("%", "\\(GGG\\)").replaceAll("<", "\\(HHH\\)").replaceAll(">", "\\(III\\)").replaceAll("#", "\\(JJJ\\)").replaceAll(" ", "\\(KKK\\)");

}

/**

* 对base64编码的字符进行解码处理 处理规则 ? (AAA) & (BBB) = (CCC) / (DDD) , (EEE) + (FFF) % (GGG) < (HHH) >

* (III) # (JJJ)

*

@param str

@return

*/

public static String deURL(String str) {

String re=str.replaceAll("\\(AAA\\)", "?").replaceAll("\\(BBB\\)", "&").replaceAll("\\(CCC\\)", "=").replaceAll("\\(DDD\\)", "/").replaceAll("\\(EEE\\)", ",").replaceAll("\\(FFF\\)", "+").replaceAll("\\(GGG\\)", "%").replaceAll("\\(HHH\\)", "<").replaceAll("\\(III\\)", ">").replaceAll("\\(JJJ\\)", "#").replaceAll("\\(KKK\\)", " ");

byte [] bBase64 = Base64.decode(re);

String s=null;

try {

s = new String(bBase64,"utf-8");

catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

return s;

}

public static void main(String[] args)

{

byte[] data={(byte) 0xfb,(byte)0xf0,(byte)0x01};

String encodeBase64 = new BASE64Encoder().encode(data);

String safeBase64Str = encodeBase64.replace('+', '-');

safeBase64Str = safeBase64Str.replace('/', '_');

safeBase64Str = safeBase64Str.replaceAll("=", "");

String s ="55(FFF)t5L(FFF)h57yW56CB5LiN6IO95Li656m6";

System.out.println(deURL(s));

}

}

URLDoBase64的更多相关文章

随机推荐

  1. Python的正则表达式re模块

    Python的正则表达式(re模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Python使用re模块提供了正则表达式处理的能力.如果对正则表达式忘记的一干二净的话,可以花费 ...

  2. CyclicBarrier 使用详解

    原文:https://www.jianshu.com/p/333fd8faa56e 1. CyclicBarrier 是什么? 从字面上的意思可以知道,这个类的中文意思是“循环栅栏”.大概的意思就是一 ...

  3. ViCANdo新版本发布(PART2)| XCP集成

            大家好,这是ViCANdo功能更新的第二篇,上一篇我们介绍了ViCANdo对PCL的集成,这一篇我们介绍ViCANdo工具支持的另外一个功能:XCP解析功能集成. 标定         ...

  4. PAT甲级1008水题飘过

    题目分析:上去下来到达的时间和数量 #include<iostream> using namespace std; ]; int main(){ int n; while(scanf(&q ...

  5. Kotlin高阶函数与函数式编程详解

    函数可变参数: 在上一次https://www.cnblogs.com/webor2006/p/11518425.html中学到了可变参考,关于可变参数有如下规则说明: “一个方法中,只允许一个参数为 ...

  6. go 学习 (三):函数 & 指针 & 结构体

    一.函数 函数声明 // 声明语法 func funcName (paramName paramType, ...) (returnType, returnType...) { // do somet ...

  7. python中序列的操作

    Python中的序列操作 可变对象:列表.字典.集合 不可变对象:数值.字符串.元组.forzenset 1.序列的通用操作 (1)测试元素是否存在 x in S和x not in S,返回True或 ...

  8. CLR如何将SEH异常映射到托管异常类型

    托管异常处理构建在Windows操作系统的结构化异常处理之上,通常称为SEH.这意味着CLR了解如何在SEH和托管异常系统之间进行互操作,这是一个非常关键的点,因为SEH基于异常代码的概念,而托管异常 ...

  9. vue中前端弹窗队列展示

    在前端写一个弹窗可能很简单,那如果同时有多个弹窗呢 这样的话就要考虑弹窗的展示问题,肯定是不能叠加在一起的,这时候就要通过队列(先进先出)来展示 思路就是根据队列来实现,至于具体的实现方式,可以在项目 ...

  10. 【JZOJ6217】【20190614】最大面积

    题意 平面上有\(n\)个点\(A_i\),\(q\)次询问,每次给出一个点\(P\),求: \[ \sum_{i=L}^{R} 2S_{\triangle OPA_i} \] 最大值,其中$S_{\ ...