`
liulanghan110
  • 浏览: 1076933 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

BASE64编码的疑惑

    博客分类:
  • JAVA
SUN 
阅读更多

BASE64编码一般是通过URL传递数据时,防止特殊字符不能传递的。它能将特殊字符变成普通的字符,再传递出去。

接收方得到数据后需要先解码,再得到原来的数据

 

代码如下:

 

 

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

public class test {
	
	public static void main(String args[]) throws Exception{
		String str = "最远的距离";
		byte[] x = str.getBytes();
		String a = new BASE64Encoder().encodeBuffer(x);
		byte[] y = new BASE64Decoder().decodeBuffer(a);
		String b = new String (y);
		System.out.println("编码前字节数组:"+x);
		System.out.println("解码后字节数组:"+y);
		System.out.println("编码前字符串:"+str);
		System.out.println("编码后字符串:"+a);
		System.out.println("解码后字符串:"+b);
	}

}

 打印的结果:

 

 

加密前字节数组:[B@1fb8ee3

解密后字节数组:[B@61de33

加密前字符串:最远的距离

加密后字符串:1+7UtrXEvuDA6w==

解密后字符串:最远的距离

 

我一直疑惑,为什么编码前字符串和解码后字符串一样。但是编码前字节数组和解码后字节数组不一样。

 

后来别人的一句话点醒了我,System.out.println()打印的并不是字节数组的值。而是默认调用了字节数组的tostring方法,然后再打印值。

事实上,数组都不能直接用System.out.println()打印。不然只是打印数组的地址而已

 

应该这样打印:

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

public class test1 {

	public static void main(String args[]) throws Exception {
		String str = "最远的距离";
		byte[] x = str.getBytes();
		String a = new BASE64Encoder().encodeBuffer(x);
		byte[] y = new BASE64Decoder().decodeBuffer(a);
		String b = new String(y);
		System.out.println("编码前字节数组:");
		for(int i=0;i<x.length;i++){
			System.out.print(x[i] +",");
		}
		System.out.println("\n解码后字节数组:" );
		for(int i=0;i<y.length;i++){
			System.out.print(y[i] +",");
		}
	}
}

 结果:

编码前字节数组:
-26,-100,-128,-24,-65,-100,-25,-102,-124,-24,-73,-99,-25,-90,-69,
解码后字节数组:
-26,-100,-128,-24,-65,-100,-25,-102,-124,-24,-73,-99,-25,-90,-69,

分享到:
评论

相关推荐

    labview 图片缩放 base64编码base64解码

    在这个特定的场景中,我们关注的是如何在LabVIEW中处理图片,包括图片的缩放、Base64编码和解码。 1. **图片缩放**: 在LabVIEW中,你可以使用图像处理库来实现图片的缩放功能。这个库提供了各种图像操作函数,...

    易语言汇编base64编码

    Base64编码是一种在网络上传输二进制数据时常用的数据编码方式,它将任意二进制数据转化为可打印的ASCII字符,方便在网络协议如电子邮件中传输。 Base64编码的基本原理是将每3个8位字节(24位)的数据转换成4个6位...

    Base64编码解码工具

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

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

    Base64编码是一种在网络上传输二进制数据的文本编码方式,主要应用于电子邮件、网页编码等领域,确保数据在传输过程中的安全性和可读性。它将任意二进制数据转换成可打印的ASCII字符,避免了非ASCII字符在传输过程中...

    Base64编码解码工具V1.5

    在Base64编码中,每个3个字节的二进制数据块会被转换为4个Base64字符。 Base64编码的主要原理是将每3个8位字节(24位)的数据分成4个6位组(每个6位可以表示0-63的十进制数),然后将这些数值映射到Base64字符集中...

    java和js相互base64编码解码

    在IT行业中,Base64是一种常见的数据编码方式,它将任意二进制数据转换为可打印的ASCII字符,常用于在网络上传输包含非ASCII字符的数据,如图片或PDF等。在Java和JavaScript中,Base64编码和解码是两个重要的功能,...

    base64编码解码离线工具

    Base64编码是一种在网络上传输二进制数据时常用的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种编码方法最初是为了在电子邮件系统中传输非ASCII字符而设计的,如今在很多场景下都有应用,如图片...

    C语言base64编码解码库

    在IT领域,Base64是一种常见的编码方式,用于将二进制数据转化为可以在电子邮件系统、文本文件等中安全传输的ASCII字符串。C语言是编程语言的基础,被广泛应用于系统编程和嵌入式开发,因此一个C语言实现的Base64...

    Base64编码jar包

    6. **URL安全的Base64编码**:在某些场景中,你需要使用URL安全的Base64编码,这种编码不包含`+`和`/`字符,而是使用`-`和`_`。`javabase64-1.3.1.jar`可能提供了这种编码方式,具体实现取决于库的API。 注意,虽然...

    文件转换为Base64编码

    Base64编码是一种在互联网上常见的数据编码方式,主要用于在不支持二进制传输的环境(如邮件系统)中传输二进制数据。它将任意的二进制数据转化为可打印的ASCII字符序列,以便在文本格式下进行传输和存储。这种编码...

    易语言 base64编码转图片 如何 提高转换速度.zip

    在IT行业中,Base64编码是一种常见的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输图片、音频或视频等非文本数据。易语言作为一款中国本土化的编程语言,提供了处理Base64编码的功能。...

    BASE64编码方法

    **BASE64编码方法** BASE64是一种广泛用于网络数据传输和存储的编码方式,它将任意二进制数据转换成可打印的ASCII字符序列。这种方法最初被设计用来在电子邮件系统中传输非ASCII字符,现在则被应用于各种场景,如在...

    Base64.zip_labview base64

    在LabVIEW中,通常我们可以通过编写自定义VI来实现Base64的编码和解码功能,而不依赖于外部库。 在“Base64.zip_labview base64”这个压缩包中,包含了一个名为“Base64.vi”的虚拟仪器(VI)。这个VI是用LabVIEW...

    Base64编码解码器

    Base64编码是一种在互联网上广泛使用的数据编码方式,它将任意二进制数据转换成可打印的ASCII字符,主要用于在不支持二进制传输的环境下(如电子邮件)传输数据。这种编码方式将每3个字节的数据转换为4个6位的十六...

    js 显示base64编码的二进制流网页图片

    Base64编码是一种编码方法,它将二进制数据转换为ASCII字符串格式。这种编码方式主要适用于编码那些无法直接通过文本格式传输的数据,比如图片、音频、视频等二进制文件。Base64编码通过把每3个字节的二进制数据转换...

    Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)

    本篇将深入探讨如何在C/C++环境中,利用从Chromium库中提取的代码进行Base64的编码与解码。 首先,Base64编码的原理是将每3个字节(24位)的数据转换为4个6位的字符,然后将这4个6位字符对应到Base64的字符集(包括...

    QT图片BAse64编码与解码

    QT图片Base64编码与解码是C++编程中一种常见的技术,特别是在处理网络传输或者存储图片数据时。Base64是一种将二进制数据转换为可打印ASCII字符的编码方式,它通过特定的算法将每3个字节的数据转换为4个ASCII字符,...

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

    Base64编码的过程是这样的:首先,将二进制数据按每3个字节分为一组(24位),然后将这24位数据转换成4个6位的二进制数,每个6位对应Base64字符集中的一位。因为6位最多能表示64种状态,所以正好可以对应64个不同的...

    c++ base64 编码

    在IT领域,Base64是一种用于在网络上传输和存储非ASCII字符的数据编码方式。它将任意二进制数据转换为可打印的ASCII字符序列,主要应用于电子邮件、HTTP传输以及XML文档中。C++作为一门通用的编程语言,也支持Base64...

    将图片进行Base64编码后传输

    "将图片进行Base64编码后传输"是一种高效且便捷的方式,它允许我们直接将图片数据嵌入到文本格式中,方便在网络中传递。这种技术广泛应用于JSON API、HTML页面以及任何不支持二进制数据流的系统。 Base64是一种编码...

Global site tag (gtag.js) - Google Analytics