- import java.io.ByteArrayOutputStream;
- public class Base64
- {
- private static char[] base64EncodeChars
- = 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 byte[] base64DecodeChars
- = new byte[] { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
- , -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1
- , -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1
- , 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29
- , 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 };
- private Base64()
- {
- }
- 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)
- {
- byte[] data = str.getBytes();
- int len = data.length;
- ByteArrayOutputStream buf = new ByteArrayOutputStream(len);
- 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;
- }
- buf.write((int) ((b1 << 2) | ((b2 & 0x30) >>> 4)));
- /* b3 */
- do
- {
- b3 = data[i++];
- if (b3 == 61)
- {
- return buf.toByteArray();
- }
- b3 = base64DecodeChars[b3];
- }
- while (i < len && b3 == -1);
- if (b3 == -1)
- {
- break;
- }
- buf.write((int) (((b2 & 0x0f) << 4) | ((b3 & 0x3c) >>> 2)));
- /* b4 */
- do
- {
- b4 = data[i++];
- if (b4 == 61)
- {
- return buf.toByteArray();
- }
- b4 = base64DecodeChars[b4];
- }
- while (i < len && b4 == -1);
- if (b4 == -1)
- {
- break;
- }
- buf.write((int) (((b3 & 0x03) << 6) | b4));
- }
- return buf.toByteArray();
- }
- public static void main(String[] args)
- {
- Base64 base64 = new Base64();
- String testStr = "{\"name\":\"vicken\",\"age\":20}";
- System.out.println("加密前:" + testStr);
- String encodeStr = base64.encode(testStr.getBytes());
- System.out.println("加密数据:" + encodeStr);
- byte[] decodeStr = base64.decode(encodeStr);
- System.out.println("解密数据:" + new String(decodeStr));
- }
- }
- 浏览: 1563573 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (624)
- C/C++ (33)
- Java (181)
- 网络相关 (7)
- 我爱篮球 (3)
- 也爱足球 (4)
- 杂谈 (1)
- 系统架构 (3)
- Web Service (14)
- Framework (3)
- 系统命令 (8)
- 管理平台相关 (8)
- 其它 (35)
- Websphere (1)
- Struts2 (24)
- Hibernate (16)
- Spring (23)
- javascript (20)
- jquery (23)
- html/css/div (28)
- 数据库 (40)
- JavaWeb (27)
- 设计模式 (2)
- 文档编写 (3)
- SVN (5)
- Ant (1)
- Maven (13)
- 软件项目管理 (8)
- AOP (1)
- kindeditor (1)
- JSON (2)
- Servlt/JSP (4)
- WordXML (2)
- XML (12)
- 面试相关 (7)
- Tomcat (11)
- 性能与调优 (29)
- 职业发展 (2)
- 操作系统 (7)
- AJAX (2)
- DWR (1)
- Eclipse (12)
- 持续集成 (3)
- 批处理命令 (1)
- Mozilla Rhino (2)
- 新鲜技术 (18)
- Apache mina (2)
- 底层技术 (18)
- Linux (22)
- 新鲜技术,IT历史 (1)
- 敏捷开发 (1)
- 版本控制 (5)
- 较火技术 (7)
- 集群 (2)
- Web前端 (13)
- 报表工具 (3)
- 网站架构 (5)
- 大数据 (8)
- 分布式存储 (5)
- 云计算 (8)
- TCP/IP协议 (1)
- 负载均衡 (3)
- 硬件 (1)
- 表现层技术 (3)
- Velocity (3)
- jvm (6)
- 并发编程 (10)
- hadoop (8)
- 数据结构和算法 (12)
- 计算机原理 (1)
- 测试驱动开发-TDD (3)
- 开发技巧 (1)
- 分词器 (1)
- 项目构建工具 (2)
- JMX (4)
- RMI (1)
- 测试技术 (22)
- 网络完全 (1)
- Git (4)
- apache开源包 (4)
- Java常用 (1)
- mock (2)
- OSGi (2)
- MongoDB (1)
- JBPM (1)
- Storm (3)
- mysql (2)
- telnet (1)
- 正则表达式 (1)
- bootstrap (4)
- Apache ActiveMQ (1)
- redis (9)
- Nginx (2)
- rsync+inotify文件同步 (2)
- testng (1)
- 原型设计工具 (1)
- 工程能力 (1)
- 风险控制 (3)
- ibatis (1)
- 分布式 (4)
- 安全技术 (1)
- 计算机基础 (4)
- 消息中间件 (1)
- UML (2)
最新评论
-
u012236967:
java命令执行jar包(里面的main函数)的方式(包括依赖其它的jar包问题) -
世界尽头没有你:
Selenium自动化测试从入门到精通(Java版)百度网盘地 ...
自动化测试工具 Selenium WebDriver 入门教程(针对主流浏览器) -
小小西芹菜:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
dwr实现Reverse Ajax推送技术的三种方式 -
hellozhouqiao:
楼主,请教一点问题.现在我们需要在excel 的页脚里面加上图 ...
FreeMaker + xml 导出word(处理目录,图片和页眉页脚问题) -
乱在长安:
使用Timer会有各种各样的问题好嘛?!书上推荐使用Sched ...
DelayQueue (ScheduledThreadPoolExecutor调度的实现)
发表评论
-
Java SE7新特性之二进制字面量
2016-12-14 22:53 794Java SE 7中, 整数类型(byte, shor ... -
浮点数为什么不精确?为什么银行的金额不能用浮点数计算
2016-12-14 22:52 1959浮点数为什么不精确? 其实这句话本身就不精确, 相对精确一 ... -
计算机是如何计算乘法除法的(实际上都是转换为二进制加法计算)
2016-12-14 22:46 6593http://blog.csdn.net/blues1021 ... -
什么是补码、反码、负数在计算中如何表示
2016-12-14 22:39 878负数在计算机中如何表 ... -
Math.abs()绝对值取到的数不一定是正数
2016-12-14 22:37 1218Math.abs() 注释:Note that if th ... -
用BigInteger实现大素数生成算法
2016-12-06 16:42 1805转自:http://www.cnblogs.co ... -
最大/梅森素数
2016-12-06 16:40 520http://baike.baidu.com/link?url ... -
RSA加密原理
2016-12-06 16:36 1226http://blog.csdn.net/q3764207 ... -
加密(AES)、公私钥(PKI)、摘要(DIGEST)、签名(SIGNATURE)、证书(CERT)的形象解释和组合用法
2016-09-15 18:19 92901.鲍勃有两把钥匙,一把是公钥,另一把是私钥。 ... -
RSA加密公私钥生成工具(openssl)
2016-09-15 13:00 1139https://www.openssl.org/source/ ... -
RPC原理详解
2016-06-23 20:47 544RPC 功能目标 RPC 的主要功能目标是让构建分布式计算 ... -
Java并发之CountDownLatch、CyclicBarrier和Semaphore
2016-06-23 20:36 1373这次说一下 JUC 中的同步器三个主要的成员:CountDo ... -
线程间协作的两种方式:wait、notify、notifyAll和Condition
2016-06-23 20:35 531在前面我们将了很多关于同步的问题,然而在现实中,需要线程之 ... -
The final local variable xxx cannot be assigned, since it is defined in an enclo
2016-04-24 17:42 1556本文就自己编程时候遇到的一个问题,简要描述一下,并提出解决 ... -
一个奇葩的excel中无法trim的“空格”的问题
2016-03-29 16:21 1884太奇怪了。打印出来的命名是空格,就是 trim() 不管用。 ... -
List深度复制
2016-02-17 09:34 2635昨天弄了一个类似List<Map<String, ... -
Eclipse导入 jar 源码乱码问题
2015-12-15 19:43 841http://blog.csdn.net/laiwenqian ... -
一致性hash算法浅析
2015-09-21 14:33 634转载请说明出处:http://blog.csdn.net/c ... -
Java高并发编程的各种陷阱
2015-07-25 17:49 971www.iteye.com/blogs/subjects/ja ... -
ASM介绍(java字节码操作利器)
2015-06-10 20:46 4311转自:http://www.ibm.com/de ...
相关推荐
用Java实现base64的加密解密
java 图片base64 加密解密 代码 包括jar
Java Base64加密解密方法工具类
java base64 算法 java实现base64加密 解密
参照网上Base64 js加密解密写的java实现,网上没看到出现过,可能大神都不屑写这种小东东,只好自己写了。弄了好几天,总算弄好了。 因为是参照 js Base64写的java实现,所以代码可实现前台js,后台java的加密,...
Base64用来将非ASCII字符的数据转换成ASCII字符的一种方法,这篇文章主要为大家详细介绍了java实现Base64加密解密算法,感兴趣的小伙伴们可以参考一下
java开发使用base64进行加密解密,开发人员只需调用其中方法即可完成加密解密操作!
pb和java对称base64加密解密 有PB源码和JAVA源码 并且附有md5加密 pb和java中都有加密解密源码 有源码才是王道
java代码实例 AES加密解密 Base64加密解密
java实现SHA1、SHA、MD5、AES加密、AES解密、BASE64解密、BASE64加密,以及apache BASE64 jar和源码
用过无问题,已经写了一份好详细的word文档。如果还是不会请留言。
使用Apache.commons,可以设置密钥,加密解密
Base64 加密解密小工具 Base64 加密解密小工具 Base64 加密解密小工具
Java Base64文件加密解密类,主要是提供Base64.java文件的下载,这个文件中提供了多种文件的加密解密方法,来自国外的一个类库,十分有参考价值。
java使用base64加密.可以直接使用,包括加密和解密,非常好用
java版的base64加密解密,亲自试过,效果不错
Base64加密与解密的实现,用java代码实现,下载即可放入工程中。
jquery实现的加密解密算法,页面经过jquery加密后,提交到后台,通过java的base64解密算法可以原样解析, demo中用的是servlet和jquery的$.ajax实现...
android加密解密工具类,基于javaBase64的加密解密工具类,公钥加密,私钥解密,高度解耦,导入即可使用
Base64加密解密实例