`

使用Base64对字符串进行编码和解码

    博客分类:
  • Java
 
阅读更多

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bitUUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

 

Java中,SunApache都提供了API对字符串进行Base64编码和解码。

 

 

package com.test.day24.enanddecode;

import java.io.IOException;
import java.util.Arrays;

import org.apache.commons.codec.binary.Base64;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * 
 * java base64编码和解码的演示类 注:base64编码后通过url传递时,获得时"="会给替换掉, 处理方式:在编码前将"=","/","+"
 * 替换成别的字符,在解码之前替换回来
 * 
 * 
 * @author tw 2010-03-01
 * 
 */
public class Base64EnAndDeCode {

	/**
	 * 编码
	 * 
	 * @param filecontent
	 * @return String
	 */
	public static String encode(byte[] bstr) {
		return new BASE64Encoder().encode(bstr);
	}

	/**
	 * 解码
	 * 
	 * @param filecontent
	 * @return string
	 */
	public static byte[] decode(String str) {
		byte[] bt = null;
		try {
			BASE64Decoder decoder = new BASE64Decoder();
			bt = decoder.decodeBuffer(str);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return bt;
	}

	public static void apacheDecoded() {
		String hello = "SGVsbG8gV29ybGQ=";

		//
		// Decode a previously encoded string using decodeBase64 method and
		// passing the byte[] of the encoded string.
		//
		byte[] decoded = Base64.decodeBase64(hello.getBytes());

		//
		// Print the decoded array
		//
		System.out.println(Arrays.toString(decoded));

		//
		// Convert the decoded byte[] back to the original string and print
		// the result.
		//
		String decodedString = new String(decoded);
		System.out.println(hello + " = " + decodedString);
	}

	public static void apacheBase64Encoded() {
		String hello = "Hello World";

		//
		// The encodeBase64 method take a byte[] as the paramater. The byte[]
		// can be from a simple string like in this example or it can be from
		// an image file data.
		//
		byte[] encoded = Base64.encodeBase64(hello.getBytes());

		//
		// Print the encoded byte array
		//
		System.out.println(Arrays.toString(encoded));

		//
		// Print the encoded string
		//
		String encodedString = new String(encoded);
		System.out.println(hello + " = " + encodedString);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// 用sun base64对字符串进行编码
		Base64EnAndDeCode te = new Base64EnAndDeCode();
		String oldStr ="贞观长歌";
		oldStr = te.encode(oldStr.getBytes());
		System.out.println("----oldStr:" + oldStr);

		// 用sun base64对字符串进行解码
		String str = oldStr;
		String str2 = new String(te.decode(str));
		System.out.println("-----str2:" + str2);

		// 用apache codec对字符串进行Base64解码
		apacheDecoded();
		// 用apache codec对字符串进行Base64编码
		apacheBase64Encoded();
	}

}

 

分享到:
评论

相关推荐

    C#使用base64对字符串进行编码和解码的测试

    在本文中,将会涉及到C#中使用Base64进行字符串编码和解码的过程。这包括了如何通过C#的.NET框架提供的API来进行字符串的Base64编码与解码,并且给出了编码和解码过程的具体实现示例代码。 首先,为了在C#项目中...

    js对图片base64编码字符串进行解码并输出图像示例

    在本示例中,我们讨论的是如何使用JavaScript对基于Base64编码的图片进行解码并显示在网页上。Base64是一种用于将二进制数据编码为ASCII字符串的编码方式,它在传输或存储非文本数据时非常有用,例如图片。 在HTML...

    Base64文本字符串编码解码加密解密双向解析工具

    使用这些工具,用户可以方便地对文本字符串进行Base64处理,同时满足安全需求。在实际应用中,这种工具对于开发者、网络通信或者数据存储都十分有用,特别是当需要在网络上传输非ASCII字符或者在不支持二进制数据的...

    Base64文本字符串解码编码双向解析转换工具

    解码过程则是相反的,首先对Base64编码的字符串进行解析,恢复出6位的块,再将这些块组合成原始的字节序列,最后根据UTF8编码规则将字节序列还原为文本字符串。 这个工具的双向解析转换功能意味着它可以实现两个...

    c#中 base64字符串与普通字符串互转

    1. 对于包含特殊字符的Base64字符串,如URL中的+和/,通常需要使用`WebUtility.UrlEncode`或`Uri.EscapeDataString`进行编码,解码时则用`WebUtility.UrlDecode`或`Uri.UnescapeDataString`。 2. 如果Base64字符串...

    字符串和base64的编码与解码

    当需要将字符串编码为Base64时,通常先将字符串按照特定字符集转换为字节序列,然后按照Base64规则进行编码。 编码过程大致如下: 1. 将字符串按选定的字符编码(如UTF-8)转换成字节数组。 2. 将字节数组按照每3个...

    js对字符串进行base64转码/解码

    2. **循环解码**:逐个字符处理输入字符串,并将其从Base64编码还原为原始数据。 3. **特殊字符处理**:处理填充符“=”的情况。 #### 三、Unicode转UTF-8 由于JavaScript内部使用的是Unicode编码,因此需要一个...

    Android.Base64对图片进行编码和解码

    本文将深入探讨如何使用Android的Base64库来对图片进行编码和解码。 ### 1. Base64编码原理 Base64是一种字符编码方式,将每3个8位字节(24位)的数据,转换为4个6位字节(24位)的数据,并使用64个可打印字符...

    java和js相互base64编码解码

    这段代码首先定义了一个字符串`plainText`,然后使用`Base64.getEncoder().encode()`进行编码,编码后的结果以字节数组形式保存,再转换回字符串打印出来。接着,通过`Base64.getDecoder().decode()`对编码后的字节...

    labview 图片缩放 base64编码base64解码

    为了实现以上功能,你需要对LabVIEW的图形化编程有深入理解,熟悉如何使用其内置的图像处理和字符串处理函数。同时,理解Base64编码的基本原理也是必要的,这将帮助你正确地进行编码和解码操作,确保数据的完整性和...

    base64与字符串互相转化

    在计算机科学中,尤其是编程领域,我们经常需要将字符串和Base64编码进行互相转换。下面我们将详细探讨这个过程: 1. **字符串到Base64的转化**: 当我们需要将一个字符串(通常由ASCII字符组成)编码为Base64时,...

    Base64编码解码工具成品+源码

    使用易语言编写Base64编码解码工具,意味着该程序的界面和逻辑都是基于中文,对于中文使用者来说,理解和修改源码会更加直观。 易语言源码文件"Base64编码解码.e"包含了实现Base64编码和解码功能的算法和用户界面...

    base64序列化字符串

    Base64使用64个字符(包括大小写字母、数字和两个特殊符号`+`和`/`)来表示这24位,最后如果剩余不足3个字节的数据,会用0填充,并在编码结果末尾添加`=`作为标识。 ### 2. 序列化与反序列化的概念 序列化是将对象...

    C++_Base64编码解码_文件_字符串

    本主题主要围绕C++语言实现Base64编码和解码进行讨论,同时也涉及到如何处理文件和字符串的数据。 首先,Base64编码的原理是将每3个字节的二进制数据(24位)分成4组,每组6位,然后将这6位二进制转换为对应的Base...

    VC 中使用Base64编解码图片

    Base64使用64个字符(包括大小写字母、数字和两个特殊符号+和/)来表示二进制数据的每6位。因为每个ASCII字符占用8位,所以每3个字节的二进制数据可以转换为4个Base64字符。如果原始数据长度不是3的倍数,会在末尾...

    base64 编码与解码 中文完美支持

    解码过程则相反,接收Base64编码的字符串后,将每4个字符(32位)转换回3个字节的数据,如果末尾有填充的字符,会忽略掉相应的位。 在提到的"目前速度最快、效率最高",可能是指这个Base64工具采用了优化的算法,...

    Base64编码解码工具

    **提供的"Base64编码解码工具":** 这个压缩包中的"Base64"文件应该是一个工具程序,用户无需安装,解压后直接运行即可对Base64文本进行编码和解码操作。这样的工具对于开发者、网络管理员或者需要处理Base64数据的...

    Base64编码解码工具V1.5

    "Base64编码解码工具V1.5"是一个专为此目的设计的软件,它能方便地对Base64字符串进行编码和解码,并且能有效处理可能出现的乱码问题。该软件的.exe文件表明它是一个独立的应用程序,可以直接在Windows系统上运行。...

Global site tag (gtag.js) - Google Analytics