原文地址:http://www.iamstudy.cn/index.php/2015/05/02/505.html

1、base64:
它是用包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符来表示所有的ascii字符。
原理: 3个字符为一组(三组),将字符ascii编码以二进制表示出来(就有24比特),由于2的6次方等于64,所以每6个比特又重新为一个组(这时候为四组),然后将每一组又转化为10进制,然后根据索引表,实现了编码。
具体详情可见:http://zh.wikipedia.org/wiki/Base64

copy维基百科上面的一个例子:

举例来说,一段引用自托马斯·霍布斯《利维坦》的文句:

Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.

经过base64编码之后变成:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

编码“Man”

文本 M a n
ASCII编码 77 97 110
二进制位 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
索引 19 22 5 46
Base64编码 T W F u

在此例中,Base64算法将三个字符编码为4个字符

Base64索引表:

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

上面说的都是能被3整除的字符个数,当个数不能被3整除又该如何。

多出1个或2个字节,先在二进制那使用0字节值在末尾补足,使其能够被3整除,然后再进行base64的编码。在编码后的base64文本后加上一个或两个’=’号,代表补足的字节数。

文本(1 Byte) A    
二进制位 0 1 0 0 0 0 0 1                                
二进制位(补0) 0 1 0 0 0 0 0 1 0 0 0 0                        
Base64编码 Q Q    
文本(2 Byte) B C  
二进制位 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1     x x x x x x
二进制位(补0) 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 x x x x x x
Base64编码 Q k M  

所以大写的A的base64密文是  QQ==

2、base32/base16

当密文编码包含了很多混淆的字符,例如“1”、“I”和“l”,“0”和“O”或者“2”和“Z”,这样的…然后就出来了base32(这段是在 http://blog.csdn.net/mittermeyer/article/details/96950 看到的…)

base32

在base64中,64个字符用6个bit位就可以全部表示,一个字节有8个bit 位,剩下两个bit就浪费掉了,这样就不得不牺牲一部分空间了。这里需要弄明白的就是一个Base64字符是8个bit,但是有效部分只有右边的6个 bit,左边两个永远是0(引用于:http://www.cnblogs.com/chengxiaohui/articles/3951129.html)

因此可以理解到,base32中就是用5个bit位表示8bit位的256个ascii字符。取其中的最小公约数,则8个base32字符表示出5个ascii字符

前面的base64是4个base64字符可以表示出3个ascii字符

下面为base32的表(from:http://en.wikipedia.org/wiki/Base32 )

TheRFC 4648Base 32 alphabet
Value Symbol   Value Symbol   Value Symbol   Value Symbol
0 A   9 J   18 S   27 3
1 B   10 K   19 T   28 4
2 C   11 L   20 U   29 5
3 D   12 M   21 V   30 6
4 E   13 N   22 W   31 7
5 F   14 O   23 X      
6 G   15 P   24 Y      
7 H   16 Q   25 Z      
8 I   17 R   26 2   pad =

base16也差不多,  4个base16字符表示出1个ascii字符。

3、base36

找资料搜到的,没认真看,应该原理差不多….

http://en.wikipedia.org/wiki/Base36

4、base解码

base64也可以加密一张图片,将图片的二进制转化为base64就ok。

在线base64转图片工具: http://www.iamstudy.cn/tools/base64Toimage.php

python标准模块里面base64,详情见

https://docs.python.org/2/library/base64.html

Base64 Base32 Base16全家桶相关推荐

  1. 从零搭建React全家桶框架教程

    从零搭建React全家桶框架教程 源码地址:https://github.com/brickspert/react-family 欢迎star 提问反馈:blog 原文地址:https://githu ...

  2. 使用react全家桶制作博客后台管理系统

    前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用react全家桶制作的博客后台管理系统 概述 该项目是基于react全家桶(React.React-r ...

  3. react全家桶实现招聘app-项目准备(一)

    1.1 项目技术 a. 使用react全家桶 + es6 + webpack + antd-mobile b. 采用模块化.组件化.工程化 c. Node + express + mongodb + ...

  4. 前端开发全家桶:UI组件 开发框架 服务端 辅助工具 应用实例 Demo示例

    element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于Vue和WeUI的组件库 iview ★5801 - 基于 Vuejs 的开源 UI 组件库 ...

  5. Vue 组件 全家桶

    Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,这里对vue插件汇总,提供vue组件 ...

  6. react 环境 全家桶

    Owner brickspert commented on 2 Sep 2017 • edited 从零搭建React全家桶框架教程 源码地址:https://github.com/bricksper ...

  7. 阿里技术文档:Redis+Spring全家桶+Dubbo精选+高性能+高并发

    最近花了很长的时间去搜罗整理Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档.今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题 ...

  8. Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶/啥都有

    前言 本文是为了帮大家快速回顾了Java中知识点,这套面试手册涵盖了诸多Java技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果. 本来想将文件上传到github上 ...

  9. 阿里技术文档:Redis+Nginx+Spring全家桶+Dubbo精选

    最近花了很长的时间去搜罗整理Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档.今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题 ...

  10. TensorFlow全家桶的落地开花 | 2019 Google开发者日

    作者 | 唐小引写于上海世博中心 出品 | GDD 合作伙伴 CSDN(ID:CSDNnews) Android 10 原生支持 5G,Flutter 1.9.Dart 2.5 正式发布 这是 Goo ...

最新文章

  1. Kotlin for 循环使用
  2. c语言测试代码怎么写,初学C语言,写了一个测试手速的工具,代码发上来,存着。。...
  3. 关于python的打包打包完生成exe文件之后,不能正常执行程序的问题解决。
  4. javaweb成长之路:struts2的探索(一)
  5. mysql数据库密码转换_MySQL数据库root账户密码忘记两种处理方法转载
  6. 观察者设计模式 php,PHP设计模式 - 观察者模式
  7. APP长期处于后台手机打开多个APP后进程被杀
  8. Excel VBA - Workbook对象
  9. 2020蓝桥杯省赛---java---C---3( 跑步训练)
  10. GPU下train 模型出现nan
  11. Sql Server参数化查询之where in和like实现之xml和DataTable传参
  12. 解决Mac装上Jetbrain系列软件(Pycharm/Idea)破解包无效导致软件启动报错
  13. easyui181版本使用记录
  14. HDU 5533 Dancing Stars on Me( 有趣的计算几何 )
  15. 记录一次redis数据库搭建过程并详细说明配置
  16. Oracle client 使用 .net程序连接 数据库时 出现 8.1.7 的解决办法
  17. qt写的在ok6410上的密码锁
  18. CloudMounter一站式网盘管理工具:将大容量网盘服务巧妙地挂载到系统文件管理器中
  19. Linux中执行shell脚本的方法,在Linux中执行Shell脚本的4种方法的总结
  20. Yardi客户入选全球房地产十强报告

热门文章

  1. (学习笔记)图像处理——Retinex增强
  2. AcrelEMS-IDC综合能效管理系统 XXX数据中心案例分享
  3. AcrelEMS-IDC综合能效管理系统在某大型数据中心的应用方案
  4. SPSS学习笔记(一)
  5. xp无法访问win7计算机提示无权限,解决WinXP无法访问Win7文件问题
  6. matlab怎么将程序加密,对于MATLAB M文件怎么加密
  7. C++实现二叉树的非递归遍历
  8. 牛课网--直通BAT面试算法精讲课--送优惠码啦
  9. class 文件比较
  10. 博图注册表删除方法_arcgis 10.2安装时error1606以及error2753解决方法记录