BASE64是一种编码方式,通常用于把二进制数据编码为可写的字符形式的数据。

这是一种可逆的编码方式。

编码后的数据是一个字符串,其中包含的字符为:A-Z、a-z、0-9、+、/

共64个字符:26 + 26 + 10 + 1 + 1 = 64。

【注:其实是65个字符,“=”是填充字符】。

64个字符需要6位来表示,表示成数值为0~63。

这样,长度为3个字节的数据经过Base64编码后就变为4个字节。

例:

字符串“Xue”经过Base64编码后变为“WHVl”。

长度为3个字节的数据位数是8*3=24,可以精确地分成6*4。

如果数据的字节数不是3的倍数,则其位数就不是6的倍数,那么需要就不能精确地划分成6位的块。,

此时,需在原数据后面添加1个或2个零值字节,使其字节数是3的倍数。

然后,在编码后的字符串后面添加1个或2个等号“=”,表示所添加的零值字节数。

例:

字符串“Xu”经过Base64编码后变为“WHU=”。

字符串“X”经过Base64编码后变为“WA==”。

应用:

需要明文保存二进制数据时,可以将不可打印的二进制数据经过Base64编码转成可打印的字符串。

  • Mozilla Thunderbird和Evolution用Base64来保密电子邮件密码
  • Base64也会经常用作一个简单的“加密”来保护某些数据,而真正的加密通常都比较繁琐。
  • 垃圾讯息传播者用Base64来避过反垃圾邮件工具,因为那些工具通常都不会翻译Base64的讯息。
  • 在LDIF档案,Base64用作编码字串。
 
测试程序:
import sun.misc.BASE64Encoder;  

public class Base64Test {  

    public static void main(String[] args) {
BASE64Encoder encoder = new BASE64Encoder();
String s = "Xue";
String encoded = encoder.encode(s.getBytes());
System.out.println("Xue -> " + encoded); s = "Xu";
encoded = encoder.encode(s.getBytes());
System.out.println("Xu -> " + encoded); s = "X";
encoded = encoder.encode(s.getBytes());
System.out.println("X -> " + encoded);
}
}

  

输出:
Xue -> WHVl
Xu -> WHU=
X -> WA==

  

 

这是一种可逆的编码方式,从编码的方式即可逆推出解码的方式。

from:http://blog.csdn.net/xuefeng0707/article/details/19845111

【转】BASE64编码简介的更多相关文章

  1. Base64编码简介

      基本概念   Base64这个术语最初是在“MIME内容传输编码规范”中提出的.Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚.它实际上是一种“二进制到文本”的编码方法,它能 ...

  2. Base64编码后通过Url传值

    Base64编码简介 Base编码使用"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",再加上补 ...

  3. JavaWeb—Base64编码(转载)

    基本概念 Base64这个术语最初是在“MIME内容传输编码规范”中提出的.Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚.它实际上是一种“二进制到文本”的编码方法,它能够将给定 ...

  4. 图片验证码——base64编码的使用

    一.介绍: 1.base64编码简介: Base64就是一种编码格式.Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成 ...

  5. 【常见加密方法】Base64编码&Tea算法简介

    Base64编码 [Base64编码是什么] Base64是一种基于64个可打印字符来表示二进制数据的表示方法. ——维基百科 Base64,顾名思义,是基于64种可视字符的编码方式.这64种符号由A ...

  6. 教你用Perl 实现Base64编码

    在用脚本后台发送邮件时,需要将html的内容转换成Base64编码的形式,这样邮件客户端会自动对Base64编码的内容进行解码,还原成原来的内容. Base64.pl: #!/usr/bin/perl ...

  7. Python Base64 编码

    0x00 Base64简介 0x01 常用场景举例 0x02 编.解码流程 0x03 Python中Base64编码与解码 0x00 Base64简介 我们知道在计算机中任何数据都是按ascii码存储 ...

  8. 计算机编码规则之:Base64编码

    目录 简介 Base64和它的编码原理 Base64的变体 Base64的编码细节 总结 简介 我们知道计算机中的文件可以分为两种,一种是人肉眼可读的文本类文件,一种是肉眼不可读的二进制文件.一般来说 ...

  9. python base64编码和解码图片

    简介 在实际项目中,可能需要对图片进行大小的压缩,较为常见的方法则是将图片转换为base64的编码,本文就python编码和解码图片做出一定的介绍. 代码 import base64 import o ...

随机推荐

  1. [HEOI2017] 相逢是问候

    Description 支持以下两个操作: 将第 \(l\) 个数到第 \(r\) 个数 \(a_l,a_{l+1},\dots a_r\) 中的每个数 \(a_i\) 替换为 \(c^{a_i}\) ...

  2. layUI Tree 的使用

    原文作者:小巷而已 [[layui-xtree 3.0]依赖layui form模块 复选框tree插件] 原文链接: https://blog.csdn.net/xianglikai1/articl ...

  3. 正则检查是否为IP地址

    /// <summary> /// 是否为ip /// </summary> /// <param name="ip"></param&g ...

  4. c# 键值数据保存XML文件

    /// <summary> /// 键值数据保存XML文件 /// </summary> /// <param name="fileName"> ...

  5. java基础之XML

    目录 java基础之XML 1. XML解析概述 2. DOM4J介绍 2.1 常用包 2.2 内置元素 2.2 Element类 2.3 Attribute类 2.4 常用操作 3. 代码演示 3. ...

  6. 初学CSS-3-文字的属性

    文字样式属性: 格式:font-style:italic;/normal; 快捷键:fsi / fsn + tab键 文字粗细属性: 格式:font-weight:bold;/bolder;/ligh ...

  7. 基于angular2x+ng-bootstrap构建后台管理系统界面

    写在前面的话 近来公司要做一个后台管理系统,人手比较少,于是作为一个前端也参与进来,其实据我所知,大部分的公司还是后台自己捣鼓的. 在后台没有到位的情况下,前端应该使用什么技术也着实让我为难了一把.经 ...

  8. WRT 下 C++ wstring, string, String^ 互转

    由于项目原因,需要引入C++. wstring 与 string 的互转研究了一段时间,坑主要在于使用下面这种方式进行转换,中文会乱码 wstring ws = L"这是一段测试文字&quo ...

  9. NoHttp封装--01

    NoHttpActivity public class NoHttpActivity extends Activity implements View.OnClickListener { privat ...

  10. [20180627]测试bbed是否支持管道命令.txt

    [20180627]测试bbed是否支持管道命令.txt --//测试bbed是否支持管道命令.txt 1.环境:SCOTT@test01p> @ ver1PORT_STRING         ...