Base64编码和解码

  • DES加密后密文长度是8个整数倍
  • 加密后比明文长度变长,所以编码表找不到对应字符,乱码
  • 使用Base64编码和解密:从Apache现在

1.加密后密文使用Base64编码

2.解密前对密文解码

    public static String encode(byte[] data) {StringBuffer sb = new StringBuffer();int len = data.length;int i = 0;int b1, b2, b3;while (i < len) {b1 = data[i++] & 0xff;if (i == len) {sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[(b1 & 0x3) << 4]);sb.append("==");break;}b2 = data[i++] & 0xff;if (i == len) {sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);sb.append(base64EncodeChars[(b2 & 0x0f) << 2]);sb.append("=");break;}b3 = data[i++] & 0xff;sb.append(base64EncodeChars[b1 >>> 2]);sb.append(base64EncodeChars[((b1 & 0x03) << 4) | ((b2 & 0xf0) >>> 4)]);sb.append(base64EncodeChars[((b2 & 0x0f) << 2) | ((b3 & 0xc0) >>> 6)]);sb.append(base64EncodeChars[b3 & 0x3f]);}return sb.toString();}public static byte[] decode(String str) throws UnsupportedEncodingException {StringBuffer sb = new StringBuffer();byte[] data = str.getBytes("US-ASCII");int len = data.length;int i = 0;int b1, b2, b3, b4;while (i < len) {/* b1 */do {b1 = base64DecodeChars[data[i++]];} while (i < len && b1 == -1);if (b1 == -1) break;/* b2 */do {b2 = base64DecodeChars[data[i++]];} while (i < len && b2 == -1);if (b2 == -1) break;sb.append((char) ((b1 << 2) | ((b2 & 0x30) >>> 4)));/* b3 */do {b3 = data[i++];if (b3 == 61) return sb.toString().getBytes("ISO-8859-1");b3 = base64DecodeChars[b3];} while (i < len && b3 == -1);if (b3 == -1) break;sb.append((char) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));/* b4 */do {b4 = data[i++];if (b4 == 61) return sb.toString().getBytes("ISO-8859-1");b4 = base64DecodeChars[b4];} while (i < len && b4 == -1);if (b4 == -1) break;sb.append((char) (((b3 & 0x03) << 6) | b4));}return sb.toString().getBytes("ISO-8859-1");}

转载于:https://www.cnblogs.com/nangongyibin/p/10391651.html

Base64编码和解码相关推荐

  1. Python 对图像进行base64编码及解码读取为numpy、opencv、matplot需要的格式

    Python 对图像进行base64编码及解码读取为numpy.opencv.matplot需要的格式 1. 效果图 2. 源码 参考 这篇博客将介绍Python如何对图像进行base64编解码及读取 ...

  2. js php base64,JavaScript实现Base64编码与解码的代码详解

    本篇文章给大家分享的是jJavaScript实现Base64编码与解码的代码详解,内容挺不错的,希望可以帮助到有需要的朋友 一.加密解密方法使用//1.加密 var str = '124中文内容'; ...

  3. java解码base64的png图片_使用PHP对图片进行base64编码和解码(png、jpg,声音、视频)...

    为什么要对图片base64编码 base64是网络上最常见的传输8Bit字节代码的编码方式之一.base64主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输.由于一些二进制字符在传输 ...

  4. mysql base64 乱码_PHP base64编码后解码乱码的解决办法

    在用PHP做东西的时候发现了一个问题,可以简单的归结为乱码的问题,但是这个问题不是函数本身造成的.来看看罪魁祸首是谁. 嫌疑人:base64_encode 和 base64_decode 罪行:我写了 ...

  5. android Java BASE64编码和解码二:图片的编码和解码

    1.准备工作 (1)在项目中集成 Base64 代码,集成方法见第一篇博文:android Java BASE64编码和解码一:基础 (2)添加 ImgHelper 工具类 package com.a ...

  6. Linux上的js解码,使用JavaScript实现Base64编码与解码

    我们知道,浏览器的window对象提供有window.atob()和window.btoa()方法可以对字符串进行Base64编码和解码. console.log(window.btoa(window ...

  7. 【Python】base64模块对图片进行base64编码和解码

    图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址. 这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的. 没 ...

  8. Java、JS、OC、Flutter的Base64编码和解码

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精,即是折腾每一天. ** 你可能需要 CSDN 网易云课堂教程 掘金 EDU学院教程 知乎 Flutter系列文章 本文章将描述在 Jav ...

  9. Java实现Base64编码和解码的方式

    Base64 编码是什么? Base64 是一种编码的方式, 并不是安全领域的加密解密算法. Base64 的目的是把一些二进制符转成普通字符, 方便在网络上传输. 因为有些系统只能使用ASCII字符 ...

最新文章

  1. 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)...
  2. c# 再次尝试 连接失败_和平精英ios充值失败该怎么办
  3. mysql5.7+proxy_mysql5.7使用ProxySQL实现读写分离
  4. android 动画动态消失,Android属性动画——没有什么动画是一个AnimSet不能解决的...
  5. 1031 查验身份证 (15分)_21行满分代码
  6. kafka和zookeeper一键启停脚本(以及kafka关不掉问题解决)
  7. 词典对象 NSDictionary与NSMutableDictionary
  8. Linux文本处理tr命令笔记
  9. LeakCanary,检测安卓,java内存泄漏
  10. Linux命令行解析参数之getopt_long
  11. 褚时健去世,柳传志发悼词:我非常钦佩褚老
  12. BO Xcelsius 2008注册方法
  13. Ansible主机清单inventory
  14. 哪些软件是用C++写的
  15. 赵小楼:《天道》《遥远的救世主》深度解析(22)丁元英为什么不问肖亚文以后有什么打算?
  16. ros安装yocs_velocity_smoother
  17. ActiveMQ详解
  18. RecyclerView的使用(二):添加头部和尾部
  19. 每周读书#3 - 《活着本来单纯》
  20. Linux C/C++ 对于SIGBUS、SIGSEGV等崩溃异常捕获实现

热门文章

  1. iOS单例创建的一点疑惑
  2. 架构师是如何炼成的?以天猫APP架构开发模式升级工程为例
  3. ZooKeeper 基本介绍
  4. 十分钟了解分布式计算:GraphX
  5. Linux下/etc/fstab文件详解
  6. Hibernate级联删除提示约束失败DELETE 语句与 REFERENCE 约束FK_SelectCourse_StudentInfo冲突。...
  7. [ZCCAD-2006.12]CAD练习图例
  8. 甲骨文第四财季SAAS和PAAS收入增长66%
  9. Android热修复升级探索——代码修复冷启动方案
  10. Radware:当前,CDN安全远远不足