为减少对象创建次数,一般会做如下编码:
package com.***.frame.util;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Base64Util {
private static final BASE64Decoder decoder = new BASE64Decoder();
private static final BASE64Encoder encoder = new BASE64Encoder();
/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public static String decryptBASE64(String key) throws Exception {
if(key==null||key.length()<1){
return "";
}
return new String(decoder.decodeBuffer(key));
}
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(String key) throws Exception {
if(key==null||key.length()<1){
return "";
}
return new String(encoder.encodeBuffer(key.getBytes()));
}
}
此类看似没问题,在高并发下,存在解密失败的情况,无法还原出正确的原字符串。正确的做法如下:
/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public static String decryptBASE64(String key) throws Exception {
if(key==null||key.length()<1){
return "";
}
return new String(new BASE64Decoder().decodeBuffer(key));
}
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(String key) throws Exception {
if(key==null||key.length()<1){
return "";
}
return new String(new BASE64Encoder().encodeBuffer(key.getBytes()));
}
具体细节待查。
分享到:
相关推荐
C++中实现BASE64工具类的关键在于设计高效的编码和解码算法。编码通常包括以下步骤: 1. 将输入的二进制数据按每3字节分割。 2. 将每3字节的数据转换为4个6位的二进制数。 3. 使用BASE64字符集映射这些6位的二进制数...
在C#中,`System.Convert`类提供了`ToBase64String`和`FromBase64String`两个静态方法,分别用于Base64编码和解码。下面是如何在C# WinForm应用中使用这两个方法的示例: ```csharp using System; using System....
图片url转base64位,base64位的数据转换成图片,附带工具类
类库可能包括一个或多个类,如Base64Encoder和Base64Decoder,分别负责编码和解码操作,同时可能提供了异步支持以适应高并发环境。 而Base64Demo项目则是对Base64Coder类库的使用示例。这个示例可能包含各种使用...
Java Base64库是用于编码和解码Base64数据的工具,它是Java 8及更高版本的标准库的一部分。在Java 8之前,如果需要进行Base64操作,开发者通常会依赖第三方库,如Apache Commons Codec或者Google的Guava库。然而,自...
8. **编码解码工具类**:如Base64编码解码,可以在Java 8的java.util.Base64中找到,或者Apache Commons Codec库提供了更多编码方式。 9. **线程并发工具类**:Java的java.util.concurrent包提供了线程池、同步工具...
在Java中,`sun.misc.BASE64Decoder`和`sun.misc.BASE64Encoder`是两个内建的类,用于实现BASE64的编码和解码功能。 `BASE64Encoder`类提供了将二进制数据编码为BASE64字符串的方法。例如,你可以创建一个`BASE64...
10. **编码解码工具类**: 包括字符编码转换、Base64编码解码、Hex编码解码等。`CodecUtils`可能包含这些功能,方便进行数据的编码和解码。 以上只是`opslabJutil-master`可能包含的一些核心功能模块,实际的工具...
MD5工具类在Java中的实现主要依赖于`java.security.MessageDigest`类。这个类提供了各种摘要算法的实例,包括MD5。下面我们将详细介绍如何创建一个简单的MD5工具类,并讨论其在数据加密中的应用。 首先,我们需要...
在Java编程中,工具类(Util Classes)是包含各种实用方法的静态类,它们提供了一种简化常见任务的方式。"java常用工具类封装"是指将常见的功能如线程管理、数据解析、第三方库集成等进行封装,以提高代码的可重用性...
在Java编程领域,工具类(Utility Class)是程序员日常工作中不可或缺的部分。这些工具类提供了许多通用的方法,可以显著提高开发效率。"java高效开发26个工具类"这个资源包含了26个精心设计的工具类,每个类都含有...
10. **编码解码工具类**:如EncodeDecodeUtil,可能包括Base64编码、Hex编码、URL编码等,对于数据传输和存储中的编码问题很有用。 11. **异常处理工具类**:如ExceptionUtil,可能包含异常的捕获、包装、转换等...
"java常用工具类整理"这个主题涵盖了Java开发中常用的工具类,这些类在日常编程中非常实用,能大大提高开发效率。这里我们将深入探讨一些常见的Java工具类,并结合`com-jarvis-base`这个文件名,推测这是一个基础...
8. **编码解码**:在网络通信或数据存储中,经常需要进行编码和解码操作,如Base64、URL编码等,工具类会提供这些功能。 9. **异常处理**:工具类可能会提供一些通用的异常处理方法,如异常的捕获、转换、包装等,...
本文将深入探讨“史上最全的dotnet工具类基类大全”,旨在为.NET程序员提供一个全面的参考资料,帮助他们更好地理解和利用这些基类来提升开发效率。 首先,让我们了解什么是.NET基类。在.NET环境中,基类通常指的是...
12. **编码解码工具类**:如`CodecUtils`,包含了各种编码和解码方法,例如`encodeBase64()`用于Base64编码,`decodeHex()`用于十六进制解码。 13. **URL处理工具类**:`UrlUtils`可以帮助处理URL,包括构建、解析...
9. **编码与解码**:在处理数据传输或存储时,可能会遇到编码解码的问题,工具类会提供对应的转换方法,如Base64、Hex编码等。 10. **数学计算**:工具类可能包含了一些数学运算的封装,比如随机数生成、加减乘除、...
12. **`java.util.concurrent`** 包:提供了线程安全的数据结构和并发工具类,如`ConcurrentHashMap`, `ExecutorService`, `Future`, `Semaphore`等,用于高效地进行多线程编程。 13. **`java.util.stream.Stream`*...
7. **线程和并发**:工具类可能包含线程安全的操作,如原子操作类`Atomic*`,线程池管理`ExecutorService`,或者并发控制`Semaphore`, `CyclicBarrier`, `CountDownLatch`等。 8. **异常处理**:`ExceptionUtils`类...
2. **Guava**:Google推出的Guava库提供了许多高级数据结构、集合操作、缓存机制以及并发工具类,极大地提高了开发效率。 3. **Java Collections Framework**:Java内置的集合框架,包括List、Set、Map接口以及它们...