Base64编码解码原理详解
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编码解码原理详解相关推荐
- 一些Base64编码/解码及数据压缩/解压方面的知识
一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...
- delphi Base64编码/解码及数据压缩/解压知识
一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当然还有第三方提供的单元或控件,其中我所接触到的认为比较好的有Indy的TIdMimeEncode / TIdMimeD ...
- Base64编码解码原理
一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送.这样用途就受到了很大的 ...
- Base64编码/解码原理及实现
前两天在做一个项目时,合作方的开发人员说需要用到Base64 编码.由于之前没听说过这种编码,马上上网google 了下资料,才发现Base64 编码使用得这么普遍,最常用的就是电子邮件传输编码方式. ...
- c# java base64编码解码_C#教程之Base64编码解码原理及C#编程实例
一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送.这样用途就受到了很大的 ...
- python3 json解析_Python3 JSON编码解码方法详解
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数 ...
- H.264的CAVLC(编码.解码)过程详解
看264也看到CAVLC来了,把这方面的资料贴在这里: 编码过程: 假设有一个4*4数据块 (变化,量化后就送入熵编码) { 0 , 3 , -1 , 0, 0, -1 , 1, 0, ...
- Delphi Base64编码/解码及ZLib压缩/解压
最近在写的程序与SOAP相关,所以用到了一些Base64编码/解码及数据压缩/解压方面的知识. 在这里来作一些总结: 一.Base64编码/解码 一般用到的是Delphi自带的单元EncdDecd,当 ...
- python 编码解码原理_Python JSON编解码方式原理详解
这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...
最新文章
- ContentResolver.query()—buildQueryString()
- 超简单的网页选项卡---jQuery
- #6279. 数列分块入门 3(区间修改,查询权值前驱)
- 基于光学导航系统,矩阵变换和3D-2D配准研究
- python入门学习:4.if语句
- 浙江大学2009年数学分析考研试题第7题参考解答
- SpringMVC连接MongoDB操作数据库
- Mybatis, 实现一对多
- atitit.html5 拼图游戏的解决之道.
- html新浪微博页面练习,js实现新浪微博首页效果
- JAVA SSO单点登录原理以及实现方案
- Sklearn 卡方检验
- [乡土民间故事_徐苟三传奇]第卅五回_道士怕鬼剪掉头发
- DES入盒前的CPA攻击
- 金秋发布会·实在里程碑,从RPA 向 IPA 进军!
- 基于单片机的CO2温湿度电路设计(#0217)
- python之循环语句(for循环)
- 【C语言】杨辉三角(等腰三角)
- 服务器虚拟化和网络虚拟化关系,数据中心网络如何应对服务器虚拟化?
- 2020-05-10
热门文章
- Lodop和C-Lodop打印控件用vue在win7电脑不兼容样式板式错乱问题
- java服务器登录系统,JavaWeb入门登陆注册系统
- 英特尔实感摄像头r200_INTEL感知计算– 2014年实感挑战
- GUI_Type.h和GUI.h
- markdown空格缩进以及HTML空格实体
- juery的学习笔记
- 猿创征文|DEM分析分层重分类
- 稳了,60K*16 薪!
- Burp Suite 2022.9.4 最新版本下载教程
- AKHQ:用于Apache Kafka管理主题、主题数据、消费者组、模式注册表、连接等的Kafka GUI。。。