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. Linux卸载搭建环境

    本章内容 卸载Apache PHP MySQL 卸载Apache 查看apache安装版本 $ apachectl -v 查看安装httpd相关软件包(红色部分) sudo yum list inst ...

  2. IdentityServer4 中文文档 -4- (简介)打包和构建

    IdentityServer4 中文文档 -4- (简介)打包和构建 原文:http://docs.identityserver.io/en/release/intro/packaging.html ...

  3. unsafe关键字

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.L ...

  4. MailBee.NET

    MailBee.NET Objects 是一款为创建.发送.接收以及处理电子邮件而设计的健壮.功能丰富的.NET控件.具备“必需”以及独特的功能,这些控件帮助开发人员简单快速地将复杂的电子邮件功能添加 ...

  5. 初识SqlLite ---.net连接数据库

    Sqlite 是一款轻量级的关系型数据库,以小巧和嵌入式闻名.以前只是听说,现在终于忍不住要尝试下.本文的初衷是为.net平台的使用者提供帮助. Sqlite有专门为VS2010开发的程序包,大家可以 ...

  6. 安装Eclipse时遇到”java was started but returned exit code = 13“如何解决?

    有的时候运行开发工具时会出现java was started but returned exit code = 13......的提示,绝大多数的问题都是版本问题: 我们可以打开命令行工具cmd 输入 ...

  7. 数据库内连接GROUP BY查询外键表数据行的总数

    最近看了看SQL,刚好遇到这个问题. INNER JOIN [外键表] ON [主键表] 内链接,用 GROUP BY 分组外键数据,COUNT(*)计算该外键数据总行数,最后用 ORDER BY 排 ...

  8. Object与Class的区别

    1.在Scala中声明private变量,Scala编译器会自动生成get,set方法 2.在Scala中变量需要初始化 3.在Scala中没有静态修饰符,在object下的成员全部都是静态的,如果在 ...

  9. 【Java并发编程】18、PriorityBlockingQueue源码分析

    PriorityBlockingQueue是一个基于数组实现的线程安全的无界队列,原理和内部结构跟PriorityQueue基本一样,只是多了个线程安全.javadoc里面提到一句,1:理论上是无界的 ...

  10. Centos7 firewalld 基本使用

    Centos7 的防火墙 firewalld比较常见 简单介绍使用 详细介绍链接推荐:   https://blog.csdn.net/buster_zr/article/details/806049 ...