Base64 字母表

Base64 编码将一个 8 位字节序列拆成 6 位的片段,并为每个 6 位的片段分配一个字符,这个字符是 Base64 字母表中的 64 个字符之一。

Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen Wert Zeichen
0 A 8 I 16 Q 24 Y 32 g 40 o 48 w 56 4
1 B 9 J 17 R 25 Z 33 h 41 p 49 x 57 5
2 C 10 K 18 S 26 a 34 i 42 q 50 y 58 6
3 D 11 L 19 T 27 b 35 j 43 r 51 z 59 7
4 E 12 M 20 U 28 c 36 k 44 s 52 0 60 8
5 F 13 N 21 V 29 d 37 l 45 t 53 1 61 9
6 G 14 O 22 W 30 e 38 m 46 u 54 2 62 +
7 H 15 P 23 X 31 f 39 n 47 v 55 3 63 /

Base64 编码实例

上图显示了一个简单的 Base64 编码实例。在这里,三个字符串组成的输入值“Ow!”是 Base64 编码的,得到的是 4 个字符的 Base64 编码值“T3ch”。它是按以下方式工作的。

  1. 字符串“Ow!”被拆分成 3 个 8 位的字节(0x4F、0x77、0x21)。
  2. 这 3 个字节构成了一个 24 位的二进制值 010011110111011100100001。
  3. 这些位被划分成为一些 6 位的序列 010011、110111、01110、100001。
  4. 每个 6 位值都表示了从 0~63 之间的一个数字,对应 Base64 字母表 64 个字符之一。得到的 Base64 编码字符串是个 4 位字符的字符串“T3ch”。
 

Base64 填充

Base64 编码收到一个 8 位字节序列,将这个二进制序列流划分成 6 位的块。二进制序列有时不能正好平均分成 6 位的块,在这种情况下,就在序列末尾填充零位,使二进制序列的长度成为 24 的倍数(6 和 8 的最小公倍数)。对已填充的二进制串进行编码时,任何完全填充(不包含原始数据中的位)的 6 位组都由特殊的第 65 个符号 “=” 表示。如果 6 位组是部分填充的,就将填充位设置为 0。

上图显示了一个填充实例。初始输入字符串为 “a:a”为 3 字节(24位)。24 是 6 和 8 的倍数,因此无需填充,得到 Base64 编码字符串为 “YTph”。然而,再增加一个字符,输入字符串会变成 32 位长。而 6 和 8 的下一个公倍数是 48,因此要添加 16 位 填充码。填充的前 4 位是与数据位混合在一起的。得到的 6 位组是 01xxxx,会被当作 010000、十进制中的 16,或者 Base64 编码的 Q 来处理。剩下的两个 6 位组都是填充吗,用 “=”表示。

URL安全的 Base64 编码

先将内容以 Base64 编码,然后检查结果字符串,将字符串中的 “+” 替换成 “-”、“/” 替换成 “_”,同时省略尾部的填充符号 “=”。

Base64 编码的更多相关文章

  1. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  2. Base64编码

    Base64编码 写在前面 今天在做一个Android app时遇到了一个问题:Android端采用ASE对称加密的数据在JavaWeb(jre1.8.0_7)后台解密时,居然解密失败了!经过测试后发 ...

  3. Android数据加密之Base64编码算法

    前言: 前面学习总结了平时开发中遇见的各种数据加密方式,最终都会对加密后的二进制数据进行Base64编码,起到一种二次加密的效果,其实呢Base64从严格意义上来说的话不是一种加密算法,而是一种编码算 ...

  4. 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希

    据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...

  5. Base64编码【转】

    转http://www.cnblogs.com/luguo3000/p/3940197.html 开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了.实际上Base64已经简单到不能 ...

  6. 【前端攻略】:玩转图片Base64编码

    引言 图片处理在前端工作中可谓占据了很重要的一壁江山.而图片的 base64 编码可能相对一些人而言比较陌生,本文不是从纯技术的角度去讨论图片的 base64 编码.标题略大,不过只是希望通过一些浅显 ...

  7. 为什么要用base64编码

    1.需求 了解为什么要使用base64对数据编码 2.理由 因为传输二进制数据的时候,网络中间的有些路由会把ascii码中的不可见字符删了,导致数据不一致.一般也会对url进行base64编码 Whe ...

  8. 图片Base64编码

    我们经常在做Jquery插件的时候需要插入一些自定义的控件,比如说按钮,而我们自己又觉着button标签很丑,而且不同浏览器显示的效果还不一样,这个时候我们需要用到图片,当然,我们可以通过img标签添 ...

  9. 浅析用Base64编码的图片优化网页加载速度

    想必大家都知道网页加载的过程,从开始请求,到加载页面,开始解析和显示网页,遇到图片就再次向服务器发送请求,加载图片.如果图片很多的话,就会产生大量的http请求,从而影响页面的加载速度.所以现在有一种 ...

  10. Base64编码原理分析

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在了解Base64编码之前,先了解几个基本概念:位.字节. 位:"位(bit)"是计算机中最小的数据单位.每一位 ...

随机推荐

  1. javascript设计模式8

    桥接模式(将抽象与其实现隔离开来,以便二者独立变化) function sendInfo(element){ var id=element.id; ajax("GET"," ...

  2. Bzoj 4403: 序列统计 Lucas定理,组合数学,数论

    4403: 序列统计 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 328  Solved: 162[Submit][Status][Discuss] ...

  3. 题目1096:日期差值(a-b=(a-c)-(b-c))

    http://ac.jobdu.com/problem.php?pid=1096 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每 ...

  4. pip 安装python环境及打包

    0.安装虚拟环境 pip install virtualenv   virtualenv env1   source env1/bin/activate   1. 将包依赖信息保存在requireme ...

  5. 【openstack报错】【metadata问题】‘http://169.254.169.254/2009-04-04/meta-data/instance-id’ failed : url error [[Errno 111] Connection refused]

    [时间]2014年2月25日 [平台]ubuntu 12.04.3 openstack havana  with nova-network in multi-host [日志]实例启动时输出的日志内容 ...

  6. xerox Network system

    XNS协议 IPX/SPX 是基于施乐的XEROX’S Network System(XNS)协议,而SPX是基于施乐的XEROX’S SPP(Sequenced Packet Protocol:顺序 ...

  7. UIKit: UIResponder(转自南峰子博客)

    有问题可以加本人QQ:564702640(验证:博客园) 我们的App与用户进行交互,基本上是依赖于各种各样的事件.例如,用户点击界面上的按钮,我们需要触发一个按钮点击事件,并进行相应的处理,以给用户 ...

  8. Latex 中宽度的设置和理解

    \textwidth, 文本区域的全部宽度 \columnwidth, 文本中一列的宽度,单栏或者多栏的情况下,值是不同的 但是,一旦\textwidth, \columnwidth, \linewi ...

  9. win10 64位安装mysql

    原文地址:http://blog.csdn.net/kingyumao/article/details/51925795

  10. USACO Feb. 2012

    Moo 找规律 吧 第一个是很久以前自己写的递归 #include<stdio.h> __int64 n; __int64 dfs(__int64 l,__int64 r,__int64 ...