/*** base64编解码器*/
public final class Base64Util {private static final char[] ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();private static final char LAST2BYTE = (char) Integer.parseInt("00000011", 2);private static final char LAST4BYTE = (char) Integer.parseInt("00001111", 2);private static final char LAST6BYTE = (char) Integer.parseInt("00111111", 2);private static final char LEAD6BYTE = (char) Integer.parseInt("11111100", 2);private static final char LEAD4BYTE = (char) Integer.parseInt("11110000", 2);private static final char LEAD2BYTE = (char) Integer.parseInt("11000000", 2);private static final char[] ENCODE_TABLE = new char[] { 'A', 'B', 'C', 'D','E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q','R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd','e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q','r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3','4', '5', '6', '7', '8', '9', '+', '/' };private static int[]  toInt   = new int[128];static {for (int i = 0; i < ALPHABET.length; i++) {toInt[ALPHABET[i]] = i;}}/*** Base64 encoding.** @param from*            The src data.* @return cryto_str*/public static String encode(byte[] from) {StringBuilder to = new StringBuilder((int) (from.length * 1.34) + 3);int num = 0;char currentByte = 0;for (int i = 0; i < from.length; i++) {num = num % 8;while (num < 8) {switch (num) {case 0:currentByte = (char) (from[i] & LEAD6BYTE);currentByte = (char) (currentByte >>> 2);break;case 2:currentByte = (char) (from[i] & LAST6BYTE);break;case 4:currentByte = (char) (from[i] & LAST4BYTE);currentByte = (char) (currentByte << 2);if ((i + 1) < from.length) {currentByte |= (from[i + 1] & LEAD2BYTE) >>> 6;}break;case 6:currentByte = (char) (from[i] & LAST2BYTE);currentByte = (char) (currentByte << 4);if ((i + 1) < from.length) {currentByte |= (from[i + 1] & LEAD4BYTE) >>> 4;}break;default:break;}to.append(ENCODE_TABLE[currentByte]);num += 6;}}if (to.length() % 4 != 0) {for (int i = 4 - to.length() % 4; i > 0; i--) {to.append("=");}}return to.toString();}/*** Translates the specified Base64 string into a byte array.** @param s the Base64 string (not null)* @return the byte array (not null)*/public static byte[] decode(String s) {int delta = s.endsWith( "==" ) ? 2 : s.endsWith( "=" ) ? 1 : 0;byte[] buffer = new byte[s.length() * 3 / 4 - delta];int mask = 0xFF;int index = 0;for (int i = 0; i < s.length(); i += 4) {int c0 = toInt[s.charAt( i )];int c1 = toInt[s.charAt( i + 1)];buffer[index++] = (byte)(((c0 << 2) | (c1 >> 4)) & mask);if (index >= buffer.length) {return buffer;}int c2 = toInt[s.charAt( i + 2)];buffer[index++] = (byte)(((c1 << 4) | (c2 >> 2)) & mask);if (index >= buffer.length) {return buffer;}int c3 = toInt[s.charAt( i + 3 )];buffer[index++] = (byte)(((c2 << 6) | c3) & mask);}return buffer;}
}

Base64编解码工具相关推荐

  1. base64 decode java_Java实现Base64编解码

    为什么要用Base64编码 在网络中传输数据都是使用ascii方式传输.对于一些图片.视频等数据,可能就会被编码成ascii中不可见部分的编码.网络中不同的路由设备处理方式不同,有可能就会把这部分数据 ...

  2. Jva编解码,加密工具类大全(Base64编解码,URL 编解码,sha56_Hmac加密,MD5对字符串进行加密,java自带类实现SHA-256方式加密)

    Base64编解码 /*** Base64编码.*/public static String encodeBase64(byte[] input) {return new String(Base64. ...

  3. Java 8实现BASE64编解码

    Java 8实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用 ...

  4. Notepad++插件Base64编解码

    我们平常进行Base64编码需要自己写代码转换, 或者使用其他人编写的小工具程序, 也可以使用在线base64编码工具, 现在我们还可以使用Notepad++自带的插件, 进行Base64编码和解码, ...

  5. 【cue语言系列学习】base64编解码

    [cue语言系列学习]base64编解码 release author: ningan123 release time: 2022-08-14 在线运行 工具 三种不同的输出方式,输出的结果是不一样的 ...

  6. 通过OpenSSL的接口实现Base64编解码

    对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details ...

  7. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  8. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式

    Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...

  9. Delphi 自带的 Base64 编解码函数

    今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...

最新文章

  1. Microbiome:掠食性粘细菌通过调节土壤微生物群落来控制黄瓜枯萎病
  2. matlab绘制sign函数,MATLAB的Symbolic Math Toolbox详解
  3. 用 Flutter 开发真的NX
  4. user-select属性用法
  5. 使用外星人进行测试:如何使用Arquillian测试JPA类型转换器
  6. 在eclipse中使用hadoop插件
  7. NFS部署及优化(一)
  8. 简单英文题 16 Maximum Sum Not Exceeding K(python)
  9. Spring自学日志00(Spring配置文件头及xsd文件版本浅析)
  10. Android 系统(89)---ART
  11. 指针和和一般的数据传递
  12. Cubieboard通过aria2和minidlna来架设家庭媒体中心
  13. 亚当·斯密 传奇一生
  14. 原生JS如何在在指定位置插入元素,前面、后面
  15. 卸载精灵(bue directx) r4.0 完美版 绿色
  16. CNVD-2020-46552 深信服EDR远程代码执行漏洞复现
  17. 分布式系统实践学习总结
  18. 海信将在柏林IFA推出屏幕发声激光电视
  19. HTML5如何实现img标签中的图片根据屏幕大小显示相应部分的内容,并保证核心内容可见
  20. scrapy的crawlspider爬虫

热门文章

  1. 企业网络及应用层安全防护技术精要(Part I)
  2. 读《游戏之旅-我的编程感悟》笔记
  3. 二叉排序树基本操作(链表实现)(有错误)
  4. Java网络编程与NIO详解14:Tomcat 常见面试题汇总
  5. SpringBoot项目端点配置
  6. 使用mockplus设计大屏原型
  7. python32位和64位有什么区别_python64位和32位区别
  8. java 监听控制台输入
  9. MacOS 系统 文件夹解析
  10. nas java_小白入门NAS—快速搭建私有云教程系列(一)