Base64编码解码原理详解

1. Base64字符的组成部分

Base64所用字符: 0,1,2 ….9 A,B,C,D…Z a,b,c,d…z + /
对应ASCII: 48,49…58,65,66…90,97,98…122, 43,47

2. 10个数字,26个大写字母,26个小写字母,1个+,一个 / 刚好64个字符

3. Base64是将每3个字符转化为4个字符,即(3*8bit=4*6bit),如果文本结尾不足3个字符,对转化为6为字符后,后面剩余的二进制位可能是2位或者4位(因为是N%6),余数为0时代表整除了,在剩余二进制位后面补0至6个二进制位,再在结尾加=号,使编码后的字符满足(N*8+等号个数)/6=base64的字符个数,说白了,如果N*8%6后余2个二进制位,就补2个=,余4个二进制位就补一个=,整除不补=。

4. Base64编码对应的字符表

5. 对字符个数是3的倍数(N*8%6=0)的字符串进行Base64编码

原文:         p           h         p对应ASCII: 01110000   01101000  01110000每6位分割:  011100  000110  100001 110000  |对应10进制值:  28      6       33     48Base64对应的字符:c     G        h      w最后php=cGhw(base64)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

6. 对字符个数为N*8%6=2的字符串进行base64编码

原文:        r        a         n       l ASCII值:01110010 01100001 01101110 01101100每6位分割:011100  100110 000101 101110 | 011011  00 0000  xxxxxx  xxxxxx |对应10进制值:28      38    5       46    27       0         =       =
对应base64字符: c    m     F       u     b       A          =       = 结果: ranl=cmFubA==(base64)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

7. 对字符个数为N*8%6=4的字符串进行base64编码

原文           h          a         c         k          eASCII值:    01101000  01100001  01100011  01101011   01100101每6位分割:  011010  000110  000101  100011 | 011010  110110  0101 00    xxxxxx |对应10进制值: 26       6      5       35      26      54       20         =对应base64字符: a      G      F        j       a       2        U         =结果 hacke=aGFja2U=(base64)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

8. Base64对于中文的不同编码可能会出现不同的结果,具体要看中文用的是什么编码。

9. 总结,看懂了base64的编码过程,当前解码的过程也就明白了,在这儿我就不多讲了,后面有时间再发布base64的编码和解码的源代码。

Base64编码解码原理详解相关推荐

  1. 一些Base64编码/解码及数据压缩/解压方面的知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

  2. delphi Base64编码/解码及数据压缩/解压知识

    一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...

  3. Base64编码解码原理

    一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送.这样用途就受到了很大的 ...

  4. Base64编码/解码原理及实现

    前两天在做一个项目时,合作方的开发人员说需要用到Base64 编码.由于之前没听说过这种编码,马上上网google 了下资料,才发现Base64 编码使用得这么普遍,最常用的就是电子邮件传输编码方式. ...

  5. c# java base64编码解码_C#教程之Base64编码解码原理及C#编程实例

    一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送.这样用途就受到了很大的 ...

  6. python3 json解析_Python3 JSON编码解码方法详解

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数 ...

  7. H.264的CAVLC(编码.解码)过程详解

    看264也看到CAVLC来了,把这方面的资料贴在这里: 编码过程: 假设有一个4*4数据块 (变化,量化后就送入熵编码) {    0 , 3 , -1 , 0,    0, -1 ,   1, 0, ...

  8. Delphi Base64编码/解码及ZLib压缩/解压

    最近在写的程序与SOAP相关,所以用到了一些Base64编码/解码及数据压缩/解压方面的知识. 在这里来作一些总结: 一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当 ...

  9. python 编码解码原理_Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...

最新文章

  1. ContentResolver.query()—buildQueryString()
  2. 超简单的网页选项卡---jQuery
  3. #6279. 数列分块入门 3(区间修改,查询权值前驱)
  4. 基于光学导航系统,矩阵变换和3D-2D配准研究
  5. python入门学习:4.if语句
  6. 浙江大学2009年数学分析考研试题第7题参考解答
  7. SpringMVC连接MongoDB操作数据库
  8. Mybatis, 实现一对多
  9. atitit.html5 拼图游戏的解决之道.
  10. html新浪微博页面练习,js实现新浪微博首页效果
  11. JAVA SSO单点登录原理以及实现方案
  12. Sklearn 卡方检验
  13. [乡土民间故事_徐苟三传奇]第卅五回_道士怕鬼剪掉头发
  14. DES入盒前的CPA攻击
  15. 金秋发布会·实在里程碑,从RPA 向 IPA 进军!
  16. 基于单片机的CO2温湿度电路设计(#0217)
  17. python之循环语句(for循环)
  18. 【C语言】杨辉三角(等腰三角)
  19. 服务器虚拟化和网络虚拟化关系,数据中心网络如何应对服务器虚拟化?
  20. 2020-05-10

热门文章

  1. Lodop和C-Lodop打印控件用vue在win7电脑不兼容样式板式错乱问题
  2. java服务器登录系统,JavaWeb入门登陆注册系统
  3. 英特尔实感摄像头r200_INTEL感知计算– 2014年实感挑战
  4. GUI_Type.h和GUI.h
  5. markdown空格缩进以及HTML空格实体
  6. juery的学习笔记
  7. 猿创征文|DEM分析分层重分类
  8. 稳了,60K*16 薪!
  9. Burp Suite 2022.9.4 最新版本下载教程
  10. AKHQ:用于Apache Kafka管理主题、主题数据、消费者组、模式注册表、连接等的Kafka GUI。。。