首页 > 编程语言 >JAVA base64 工具类

JAVA base64 工具类

时间:2022-11-07 19:38:58浏览次数:39  
标签:legalChars JAVA int data base64 63 工具 buf append


import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;

public class Base64Util {

private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
public String getBase64Str(SortedMap<Object, Object> parameters) throws UnsupportedEncodingException {


StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();
Iterator it = es.iterator();
while (it.hasNext())
{
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object v = entry.getValue();
if (null != v && !"".equals(v))
{
sb.append(k + "=" + v + "&");
}
}
sb.deleteCharAt(sb.lastIndexOf("&"));
return encode(sb.toString().getBytes("UTF-8")).replaceAll(" ", "");
}


public static String encode(byte[] data)
{

int start = 0;
int len = data.length;
StringBuffer buf = new StringBuffer(data.length * 3 / 2);

int end = len - 3;
int i = start;
int n = 0;

while (i <= end)
{
int d = ((((int) data[i]) & 0x0ff) << 16) | ((((int) data[i + 1]) & 0x0ff) << 8) | (((int) data[i + 2]) & 0x0ff);

buf.append(legalChars[(d >> 18) & 63]);
buf.append(legalChars[(d >> 12) & 63]);
buf.append(legalChars[(d >> 6) & 63]);
buf.append(legalChars[d & 63]);

i += 3;

if (n++ >= 14)
{
n = 0;
buf.append(" ");
}
}

if (i == start + len - 2)
{
int d = ((((int) data[i]) & 0x0ff) << 16) | ((((int) data[i + 1]) & 255) << 8);

buf.append(legalChars[(d >> 18) & 63]);
buf.append(legalChars[(d >> 12) & 63]);
buf.append(legalChars[(d >> 6) & 63]);
buf.append("=");
}
else if (i == start + len - 1)
{
int d = (((int) data[i]) & 0x0ff) << 16;

buf.append(legalChars[(d >> 18) & 63]);
buf.append(legalChars[(d >> 12) & 63]);
buf.append("==");
}

return buf.toString();
}
}

 

标签:legalChars,JAVA,int,data,base64,63,工具,buf,append
From: https://blog.51cto.com/u_15753094/5831051

相关文章

  • JAVA 接口签名sign生成 工具类
    importorg.springframework.util.StringUtils;importjava.util.Map;importjava.util.Random;importjava.util.TreeMap;/***@Author:JCccc*@CreateTime:2018-10-30......
  • Java-SSRF
    漏洞分析原理:服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。大部分的web服务器架构中,web服务器自身都可以访问互联网和服务器所在的内网......
  • JavaScript之数组高阶API—reduce()
    一文搞懂JavaScript数组中最难的数组API——reduce()前面我们讲了数组的一些基本方法,今天给大家讲一下数组的reduce(),它是数组里面非常重要也是比较难的函数,那么这篇文章......
  • JAVA MD5加密工具类
     importjava.io.UnsupportedEncodingException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;/***@Author:JCccc*@CreateTim......
  • JAVA 责任链设计模式
    这次介绍责任链模式,采用最普遍的请假例子来编码实现。先给列出个模拟的需求,一个人请假,调用一个接口,传入的参数是他请假的天数。然后,请假的天数---->如果小于2天,由直属领导......
  • JAVA回调函数简单讲解 CallBack
    回调,其实就是有个回应的那种感觉。那么,接下来,我们就用消息推送的场景,简简单单地讲解下回调函数的使用。直接看代码,先创建一个回调接口,MessageCallBack/***@Author:JCccc......
  • Java-xss
    XSS代码分析在php里面会使用echo对用户输入的参数进行直接输出,导致了xss漏洞的产生。而在Java里面会将接收到的未经过滤的参数共享到request域中,在jsp的页面里面使用EL表......
  • 3183-2020-Java-国赛-4-3
    看题看半天看不懂,原来它这个包装数量是指能装的商品数量啊,这个价格指的不是单个包装的价格,而是包装里包含商品的总价10080200150意思是,第一种200元100个商品、第二......
  • Python ipython工具包
    ipython提供了丰富的工具包,用于建立Python的交互式操作,或许有用,在此处做一个标记!!!目前知道比较好用的就是支持magic函数,比如:%time这些,如果没有安装这个包,%会被视为错误语......
  • 方法重载,可变参数,作用域,构造器,this---JAVA
    一、方法重载(1)方法名:必须相同;(2)参数列表:必须不同(参数类型或个数或顺序,至少有一样不同,参数名无要求)(3)返回类型:无要求publicclassvar{publicstaticvoidmain(String[......