您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

一篇文章彻底搞懂base64编码原理

时间:2019-06-28 09:20:40  来源:  作者:

本文原创作者:源理君

头条号:底层软件架构

公众号:技术原理君

开始

在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇文章带领大家了解一下Base64的底层实现。

base64是什么东东呢?

Base64编码是网络上常见的用于传输8bit字节数据的一种编码方式之一,所以可以依据概括:它是一种编码方式,记住它不是加密的方式,它没有秘钥的概念,任何人拿到数据都能解析出来。它只是一种编码方式!!

到底哪些地方会使用?

我们在参数传输的过程中肯定遇到过这样一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。

电子邮件刚问世的时候,只能传输英文,但后来随着用户的增加,中文、日文等文字的用户也有需求,但这些字符并不能被服务器或网关有效处理,因此Base64就登场了。随之,Base64在URL、Cookie、网页传输少量二进制文件中也有相应的使用。

实现原理

它的来龙去脉我们是知道了,但它的原理我们还不知道,那下面我们就来彻底搞懂它。

Base64编码将一个8位子节序列拆散为6位的片段,而且这每个6位的片段都会被分配一个字符,那这个是个什么字符呢?其实它是base64字母表中的64个字符之一,所以顾名思义base64了。而这64个字符可是有讲究的,是选择了最常用而且兼容性最好的64个字符。所以可以算出base64编码后的字符串大约比编码前大了33%,因为用8位来表示6位。下面的详细的例子,大家来感受下。

Base64还有几个规则如下:

①.3字符变为4字符。

②每76个字符增加一个换行符。

③.结束符也要编码。

例子

加入编码前的数据是“Ow!”,那编码之后是4个字符的base64编码值“T3ch”。下面是具体的转换过程。

  • 1, 字符串"Ow!"被拆分成3个8位的字节(0x4F、0x77、0x21)。看下图:
一篇文章彻底搞懂base64编码原理

 

  • 2, 这3字节构成了一个24位的二进制 01001111 ,01110111 ,00100001。看下图:
一篇文章彻底搞懂base64编码原理

 

  • 3, 这些为被划分为一些6位的序列010011、110111、011100、1000001。看下图:
一篇文章彻底搞懂base64编码原理

 

  • 4, 每6位值都表示了从0~63数值,在base64字母表中的都有对应的字符。所以查表转换得出是4字符的字符串“T3ch”。如下图所示转换表。
一篇文章彻底搞懂base64编码原理

 

整个过程就over了,就是这么简单,大家理解了吗?

总结

大多数编码都是由字符串转化成二进制的过程,而Base64的编码则是从二进制转换为字符串。与常规恰恰相反,

Base64编码主要用在传输、存储、表示二进制领域,不能算得上加密,只是无法直接看到明文。也可以通过打乱Base64编码来进行加密。

中文有多种编码(比如:utf-8、gb2312、gbk等),不同编码对应Base64编码结果都不一样。



Tags:编码   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
此文由前美团前端工程师@小鱼儿授权发布背景在日常开发中很少接触到字符的概念,大部分语言对字符的转换都已经封装的足够好,不需要开发人员过多考虑编码解码的问题。但是字符...【详细内容】
2021-12-14  Tags: 编码  点击:(26)  评论:(0)  加入收藏
编码封装的好处:没有安装pycharm的电脑也可以运行代码,适合接单的同学,可以将封装好的代码发给客户。步骤如下: 第一步 安装库pip install pyinstaller因为程序自身存在缺陷,首先...【详细内容】
2021-12-07  Tags: 编码  点击:(19)  评论:(0)  加入收藏
视频编码是一门在减少视频数据体积大小或码率的同时而不对其质量产生不良影响(在人类的视觉感知下)的科学。对视频进行编码从而减少其数据体积同时保持视频质量是一项综合了艺术和科学的技术。在本篇文章中,我们将介绍这...【详细内容】
2021-10-11  Tags: 编码  点击:(43)  评论:(0)  加入收藏
H.264编码原理以及I帧B帧P帧前言-----------------------H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段...【详细内容】
2021-08-16  Tags: 编码  点击:(56)  评论:(0)  加入收藏
一、基本概念 1 比特率:表示经过编码(压缩)后的音频数据每秒钟需要用多少个比特来表示,单位常为kbps。2 响度和强度:声音的主观属性响度表示的是一个声音听来有多响的程度。响度...【详细内容】
2021-08-16  Tags: 编码  点击:(69)  评论:(0)  加入收藏
缩进使用soft tab(4个空格)。var x = 1, y = 1;if (x < y) { x += 10;} else { x += 1;}单行长度不要超过80,但如果编辑器开启word wrap可以不考虑单行长度。分号以下...【详细内容】
2021-08-13  Tags: 编码  点击:(91)  评论:(0)  加入收藏
前言 传统定时器是硬编码。但是有的时候业务上需要不断地调整问题描述 我们开发了一个定闹钟的功能。这个功能肯定是定时器开发。但是这就存在一个问题这个定时是动态的。那...【详细内容】
2021-06-17  Tags: 编码  点击:(128)  评论:(0)  加入收藏
在项目中,对豹纹进行压缩、加密后,最后一步一般是 base64 编码。因为 base64 编码的字符串更适合不同平台,不同语言的传输。base64 编码的优点: 算法是编码,不是压缩,编码后只会增...【详细内容】
2021-05-14  Tags: 编码  点击:(212)  评论:(0)  加入收藏
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、...【详细内容】
2021-04-02  Tags: 编码  点击:(241)  评论:(0)  加入收藏
本文由华为云资深产品专家左雯在LiveVideoStackCon2020线上峰会的演讲内容整理而成,本文从视频编解码技术的趋势、难点和挑战以及华为云视频产品的编解码关键技术实践与成果...【详细内容】
2020-10-30  Tags: 编码  点击:(61)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条