`

Base64 编解码 工具类

    博客分类:
  • java
 
阅读更多
1.工具类:
import java.io.UnsupportedEncodingException;
import java.util.Base64;

public class Base64Util {
	/**
	 * base64 编码
	 * 
	 * @param str
	 * @return
	 */
	public static String encoder(String str){
		final Base64.Encoder encoder = Base64.getEncoder();
		String strEncoder = null;
		try {
			strEncoder = encoder.encodeToString(str.getBytes("UTF-8"));
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return strEncoder;
	}
	/**
	 * base64 解码
	 * 
	 * @param str
	 * @return
	 */
	public static String decoder(String str){
		final Base64.Decoder decoder = Base64.getDecoder();
		String strEncoder = null;
		try {
			strEncoder = new String(decoder.decode(str), "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return strEncoder;
	}
	
	/**
	 * test
	 * 
	 * @param args
	 */
	public static void main(String[] args){
		String testStr = "qwerqwfavavaegfgbsd#*#-asdfasd-asdf-fasdf-asd";
		String encoderStr = encoder(testStr);
		System.out.println(encoderStr);
		String decoderStr = decoder(encoderStr);
		System.out.println(decoderStr);
	}
}


2.备考
Java上的Base64
早期作法
早期在Java上做Base64的編碼與解碼,會使用到JDK裡sun.misc套件下的BASE64Encoder和BASE64Decoder這兩個類別,用法如下:

final BASE64Encoder encoder = new BASE64Encoder();
final BASE64Decoder decoder = new BASE64Decoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//編碼
final String encodedText = encoder.encode(textByte);
System.out.println(encodedText);
//解碼
System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
從以上程式可以發現,在Java用Base64一點都不難,不用幾行程式碼就解決了!只是這個sun.misc套件所提供的Base64功能,編碼和解碼的效率並不太好,而且在以後的Java版本可能就不被支援了,完全不建議使用。

Apache Commons Codec作法
Apache Commons Codec有提供Base64的編碼與解碼功能,會使用到org.apache.commons.codec.binary套件下的Base64類別,用法如下:

final Base64 base64 = new Base64();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//編碼
final String encodedText = base64.encodeToString(textByte);
System.out.println(encodedText);
//解碼
System.out.println(new String(base64.decode(encodedText), "UTF-8"));
以上的程式碼看起來又比早期用sun.misc套件還要更精簡,效能實際執行起來也快了不少。缺點是需要引用Apache Commons Codec,很麻煩。

Java 8之後的作法
Java 8的java.util套件中,新增了Base64的類別,可以用來處理Base64的編碼與解碼,用法如下:

final Base64.Decoder decoder = Base64.getDecoder();
final Base64.Encoder encoder = Base64.getEncoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//編碼
final String encodedText = encoder.encodeToString(textByte);
System.out.println(encodedText);
//解碼
System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
與sun.misc套件和Apache Commons Codec所提供的Base64編解碼器來比較的話,Java 8提供的Base64擁有更好的效能。實際測試編碼與解碼速度的話,Java 8提供的Base64,要比sun.misc套件提供的還要快至少11倍,比Apache Commons Codec提供的還要快至少3倍。因此在Java上若要使用Base64,這個Java 8底下的java.util套件所提供的Base64類別絕對是首選!

原文链接:http://magiclen.org/java-base64/
分享到:
评论

相关推荐

    Base64编码解码工具类

    android Base64编码解码jar包

    Base64编码解码工具V1.5

    描述中提到的"Base64编码解码工具V1.5"是一款实用软件,能够帮助用户对Base64编码的数据进行解码。在使用过程中,用户只需选择"Base64"编码选项,软件就会自动处理输入的Base64字符串,将其还原为原始的二进制数据。...

    base64编解码工具和VC++源码

    在VC++环境中,开发Base64编解码功能通常涉及到C++语言的基础知识,如字符串处理、内存管理和二进制数据操作。Base64编码主要步骤包括: 1. 将原始二进制数据按每3个字节分为一组,不足3字节的末尾补零。 2. 将每组...

    base64解码工具

    在实际工作中,不仅可以使用如"Base解码工具.exe"这样的工具,也可以借助各种编程语言的库函数,如Python的`base64`模块,Java的`java.util.Base64`类等,进行编码和解码操作。无论是在PKI开发还是其他涉及到二进制...

    Base64编解码器

    Base64编解码是一种广泛应用于网络通信和数据存储中的编码技术,它的主要作用是将二进制数据转换为可打印的ASCII字符序列,以便在不支持二进制传输的环境中进行安全传输。Base64编码是基于64个字符的字母数字表,...

    Base64编解码.rar

    总结来说,Base64编解码是将二进制数据转换为ASCII字符串的技术,方便在网络传输中使用。了解其原理和应用可以帮助我们在开发过程中更好地处理二进制数据的编码和解码需求。在实际项目中,根据具体场景选择合适的...

    qt base64编解码 源代码

    对于压缩包中的"jiami2"文件,可能是一个包含Qt Base64编解码源代码的文件,具体实现可能包括以下几个步骤: 1. 创建一个QByteArray对象,装载待编码或解码的数据。 2. 如果是编码,调用`toBase64()`函数,将...

    Base64编码解码工具

    C++中的Base64编码解码工具是开发者在处理这类问题时的重要辅助,本文将深入探讨Base64编码的原理及其在C++中的实现。 首先,Base64编码的基本原理是将每3个字节(24位)的数据分为4组,每组6位,然后将这6位二进制...

    Base64工具类

    Base64工具类,base转码解码

    android工具类:基于javaBase64的加密解密工具类

    本文将详细介绍一个基于Java Base64的Android加密解密工具类,该工具类支持公钥加密和私钥解密,具有高度的解耦性,方便集成到项目中。 一、Base64加密解密基础 Base64是一种编码方式,它将任意二进制数据转换为可...

    base64编码解码工具源码

    在这个“base64编码解码工具源码”中,我们可以期待找到一个实现了Base64编码和解码功能的应用程序。这个工具具有用户界面,使得非技术用户也能方便地对数据进行编码和解码操作。用户界面可能包含输入框用于输入待...

    Base64编解码

    这很可能是C++实现的Base64编解码库。Base64.cpp可能包含了Base64编码和解码的函数实现,如`encode`和`decode`,而Base64.h则可能定义了相关的类和函数接口。在实际编程中,你可以通过包含Base64.h文件,然后调用...

    Base64.rar_base64_base64 解码工具_base64编码

    自已做的BASE64转换工具, 包函了一个BASE64编码解码的类

    base64-编码解码工具-python实现源码

    在提供的压缩包文件"base64"中,可能包含了更具体的Base64编码解码工具的实现,例如自定义类或扩展功能。这些源码可以作为学习和理解Base64编码工作原理的实例,也可以作为基础,帮助你开发更复杂的应用,如文件的...

    Base64编码解码测试工具

    解码工具会检查字符块的有效性,并去除末尾的填充等号。确保编码和解码的正确性是这类工具的关键功能。 在实际使用中,用户可能会遇到一些问题,例如错误的编码导致解码失败、编码后数据的长度增加、或者编码时未...

    Base64编解码Android和ios的例子,补充JNI中的例子

    这篇博客文章“Base64编解码Android和ios的例子,补充JNI中的例子”很可能是讨论如何在Android和iOS平台上实现Base64的编码和解码,并且可能涉及到了Java本地接口(JNI)的使用。 在Android中,Base64的编码和解码...

    base64互相转换工具类

    base64互相转换工具类,可以字符串进行base64编码和解码,可以把base64转图片,可以把在线或者本地图片转base64码,另外还有去除字符串中的空格、回车、换行符、制表符方法。

    Base64批量加密工具

    综上所述,这个"Base64批量加密工具"涉及了Java编程、文件I/O、异常处理、批处理逻辑、可能的用户界面设计以及编码和解码技术。开发者在创建这个工具时,不仅需要掌握基本的编程技能,还需要了解如何有效地处理大量...

    实现base64编码工具类及整套jar.zip_Base64.jar_base64 jar_jar base64_工具类及整套j

    总结起来,实现一个Base64编码工具类并整合到JAR包中,不仅要求能够完成基本的Base64编码和解码,还可能需要支持密码加密解密功能,以提高数据的安全性。这样的工具类和配套库对于在Java环境中处理和传输二进制数据...

Global site tag (gtag.js) - Google Analytics