Base64基本原理
1.什么是Base64
Base64是一种基于64个可打印字符来表示二进制数据的编码方式,是从二进制数据到字符的过程。
原则上,计算机中所有内容都是二进制形式存储的,所以所有内容(包括文本、影音、图片等)都可以用base64来表示。
2.Base64编码原理
Base64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码,同理有Base32、Base16编码。标准Base64编码使用的64个字符为:
有点特殊的是最后两个字符,因对最后两个字符的选择不同,Base64编码又有很多变种,比如用于编码URL的Base64 URL编码。
Base64编码本质上是一种将二进制数据转成文本数据的方案。对于非二进制数据,是先将其转换成二进制形式,然后每连续6比特(2的6次方=64)计算其十进制值,根据该值在上面的索引表中找到对应的字符,最终得到一个文本字符串。
假设我们要对 Hello! 进行Base64编码,按照ASCII表,其转换过程如下图所示:
可知 Hello! 的Base64编码结果为 SGVsbG8h,每3个原始字符经Base64编码成4个字符。那么,当原始字符串长度不能被3整除时,怎么办呢?
以 Hello!! 为例,其转换过程为:
Hello!! Base64编码的结果为 SGVsbG8hIQAA。可见,不能被3整除时会采用来来补0的方式来完成编码。
需要注意的是:标准Base64编码通常用 = 字符来替换最后的 A,即编码结果为 SGVsbG8hIQ==。因为 = 字符并不在Base64编码索引表中,其意义在于结束符号,在Base64解码时遇到 = 时即可知道一个Base64编码字符串结束。
3.Base64编码应用
就前端而言,对于一些简单的图片,为了减少外部资源加载,降低页面加载时间,可以采用base64将图片编码成字符串,直接内嵌到页面中。这种内嵌方式的实现,得益于大部分浏览器对Data URI scheme
特性的支持,该特性通常会在CSS设置背景图片时用到,其格式为:
background:url(data:文件类型;编码方式,编码后的文件内容);
也可通过img
标签嵌入图片:
<img alt="base64 image" src="data:文件类型;编码方式,编码后的文件内容" />
下面说下具体使用方法(以icon图标为例):
- 下载或制作所需图标;
- 使用base64在线编码工具,将图标编码成字符串;
- 将得到的字符串复制到你的前端代码中使用(例如background:url(字符串))
4.适用场景
一般适用于比较小、色彩层次单一的图片(如icon图标),不要试图用于色彩丰富的较大图片,尽管能够实现展现,但由于编码后的字符串非常大,会明显增大HTML/CSS文件的大小,影响加载速度。
本文学习网上资料整理而来,仅供个人学习使用,部分内容仅代表个人理解及思考。
主要参考:
http://blog.xiayf.cn/2016/01/...
http://blog.csdn.net/zdy0_200...
Base64基本原理相关推荐
- Base64编码运用与基本原理
编码说白了就是按照一定规则对数据进行转换,工作原理有点类似于查字典,base64编码(叫base64的原因是因为其使用64个字符来对任意数据进行编码)可以用来将图片或者其他文件的二进制数据转换成字符串 ...
- Base64编码原理与实现
Base64编码的原理是按bit将每6个bit转换成Base64编码表中的相应字符.下面是Base64的编码表: 0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 1 ...
- OpenSSL使用3(基本原理及生成过程)(转)
1. 基本原理 OpenSSL初接触的人恐怕最难的在于先理解各种概念 公钥/私钥/签名/验证签名/加密/解密/非对称加密 我们一般的加密是用一个密码加密文件,然后解密也用同样的密码.这很好理解,这个是 ...
- Spring Security构建Rest服务-0600-SpringSecurity基本原理
一.引入 只要引入了spring-boot-starter-security,所有的服务都会被保护起来.启动项目,打开时所有的controller会被保护起来,随便访问一个,如http://local ...
- [译转] eBPF 概念和基本原理
译文:https://cloud.tencent.com/developer/article/1749470 https://tonydeng.github.io/sdn-handbook/linux ...
- 【MIME协议】base64编码与quoted-printable编码
文章目录 MIME概述 base64编码 基本原理 具体步骤 例题 quoted-printable编码 基本步骤 例题 ASCLL字符代码表 MIME概述 电子邮件协议SMTP通过连接建立.邮件传送 ...
- 不安全的文件上传基本原理(Unsafe file upload)
不安全的文件上传基本原理(File upload vulnerabilities) 文章目录 不安全的文件上传基本原理(File upload vulnerabilities) 什么是文件上传漏洞? ...
- Base64系列第一篇 Base64介绍
本文地址:http://blog.csdn.net/morewindows/article/details/11871429转载请标明出处,谢谢. 欢迎关注微博:http://weibo.com/Mo ...
- Windows提权基本原理,各位表哥了解下!
Windows提权基本原理 没有多少人谈论在Windows下提权,是一件让人遗憾的事!我想,没有人这么做的理由有以下几点: 在渗透测试项目中,客户需要的验证就是一个低权限shell. 在演示环境,你经 ...
- 2021-9-23 base64学习
逆向解密 base64 基本概念: base64根据百度的查询,定义如下:Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方 ...
最新文章
- 史上最受程序员待见的计算机入门读物——图解X系列
- 【队列源码研究】消息队列beanstalkd源码详解
- jquery学习(六)-jquery中的动画
- VR不仅用于游戏!HTC Vive显示美国市长VR用于城市规划
- ubuntu20输入法qiehuan_Ubuntu20.04安装搜狗输入法
- 纪念一下我2020年的努力结果,腾讯云社区创作总结
- php键值对数组排序,PHP按指定键值对二维数组进行排序的方法_PHP
- 管理软件实施(5)——实施先了解下售前工作的特点(上)
- java程序经过编译后会产生byte code_Java 虚拟机(JVM)内存模型
- Java变量的初始化问题探究
- 计算机初试占比高的学校,复试压力小,初试占比70%及以上的院校汇总!
- 引领架构创新之路第八届系统架构师大会撼世来袭
- SQL基础教程读书笔记
- 调通sina33下的AP6212A0(WIFI+BT)(V1.1版本)
- 计算机思维在化学上的应用,【科学思维】化隐性为显性思想在化学中的应用
- windows powershell激活anaconda虚拟环境
- php七牛云,php七牛云
- 关于消防系统安装的一些规范
- vLive虚拟直播,助力企业打造线上云年会
- PHP学习笔记:环境变量