转: https://developer.aliyun.com/article/763589

一、定义

Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。
为什么会有 Base64 编码呢?(Base64编码的作用)  因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像 ASCII 码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。
图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。即把不可打印的字符也能用可打印字符来表示,问题就解决了。
Base64 编码就是为了实现这一方案而设计的编码格式。
Base64 就是一种基于 64 个可打印字符来表示二进制数据的表示方法
它的编码过程如下:

  • 将待转换的字符串每三个字节分为一组,每个字节占 8 个二进制位,那么共有 24 个二进制位。
  • 将第(1)步得到的每 24 个二进制位分为每 6 个一组,则每 3 个字节可分为 4 组。
  • 在每组前面添加两个 0 ,每组由 6 个二进制位变为 8 个二进制位,总共 32 个二进制位,即四个字节。
  • 根据 Base64编码对照表(见下表)获得对应的值。


大多数编码都是由字符串转化成二进制的过程,而 Base64 的编码则是从二进制转换为字符串。与常规恰恰相反,Base64 编码主要用在传输、存储、表示二进制领域,不能算得上加密,只是无法直接看到明文。也可以通过打乱Base64 编码来进行加密。中文有多种编码(比如:utf-8、gb2312、gbk等),不同编码对应Base64编码结果都不一样。

二、补充

挺多人会误以为 Base64 是加密算法,喜欢在数据传输不安全的时候来一句:使用 Base64 加密一下呗。
我们先来看一下加密的定义:在密码学中,加密(英语:Encryption)是将明文信息改变为难以读取的密文内容,使之不可读的过程。只有拥有解密方法的对象,经由解密过程,才能将密文还原为正常可读的内容。
所谓加密算法就是加密的方法。
如果你使用  Base64  进行 “加密” ,第三方拿到数据可以瞬间解密,根本无法实现你想要的 加密 效果。因此,Base64 不能说是 加密算法,只能说是 编码

三、Tips

如果你需要在网络上留下你的 微信号、邮箱、QQ 、手机号等具有隐私信息的时候,你不妨留下它们对应的 Base64 编码信息。一方面,想要联系你的人需要进行解码操作,可以过滤一部分需求没那么强烈的人;另外一方面也可以形成 简单的反爬虫 操作,不容易被爬虫收集到你的隐私信息。

转:什么是 Base64编码相关推荐

  1. Python 对图像进行base64编码及解码读取为numpy、opencv、matplot需要的格式

    Python 对图像进行base64编码及解码读取为numpy.opencv.matplot需要的格式 1. 效果图 2. 源码 参考 这篇博客将介绍Python如何对图像进行base64编解码及读取 ...

  2. Java中BASE64 编码

    2019独角兽企业重金招聘Python工程师标准>>> BASE64 编码是一种常用的字符编码,在很多地方都会用到.JDK 中提供了非常方便的 BASE64Encoder 和 BAS ...

  3. js php base64,JavaScript实现Base64编码与解码的代码详解

    本篇文章给大家分享的是jJavaScript实现Base64编码与解码的代码详解,内容挺不错的,希望可以帮助到有需要的朋友 一.加密解密方法使用//1.加密 var str = '124中文内容'; ...

  4. js base64 编码解码

    js base64 编码解码 encode decode,可以直接使用 function Base64() {// private property_keyStr = "ABCDEFGHIJ ...

  5. python使用base64编码解码数据

    python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...

  6. 将base64编码图片上传到七牛云

    将base64编码图片上传到七牛云 接口说明 FAQ >对象存储 >上传下载> 如何上传base64编码图片到七牛云 在七牛云FAQ上有一篇文章,讲解的接口的使用 https://d ...

  7. php和js中,utf-8编码转成base64编码

    1.php下转化base64编码 php中,文本文件的编码决定了程序变量的编码,比如以下代码在不同编码的php文件中,展示的效果也是不一样的 <?php$word = '严';echo base ...

  8. android Java BASE64编码和解码一:基础

    今天在做Android项目的时候遇到一个问题,需求是向服务器上传一张图片,要求把图片转化成图片流放在 json字符串里传输. 类似这样的: {"name":"jike&q ...

  9. .Net Base64编码

    using System; using System.Text; using System.IO; using System.Security; using System.Security.Crypt ...

  10. Base64编码的字符串与图片的互转

    用Flex写了一个例子,图片(暂时仅支持png.jpg/jpeg)转成base64编码的字符串(默认取上传文件的后缀名,然后添加了"data:image/(png|gif|jpg|jpeg) ...

最新文章

  1. JS 04 Date_Math_String_Object
  2. 【小白学习keras教程】十、三种Model Selection方法:k-fold cross-validation,GridSearchCV和RandomizedSearchCV
  3. Extjs中使用FusionChart举例
  4. 数据结构-使用两个栈实现一个队列
  5. linux 看防火墙的启停日志,LINUX下防火墙iptables的日志管理
  6. Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性
  7. Vmware中linux端口映射,让外网/ssh访问虚拟机Linux
  8. 计算机里面保留游戏账号名字的是什么文件夹,租号玩系统文件已损坏-电脑安装游戏老是显示文件已损坏...
  9. Go程序设计语言1.1 hello,world
  10. idea使用svn下载项目并配置项目
  11. 自动控制原理7.1---离散系统的基本概念
  12. 12款高质量的免费 HTML 网页模板下载
  13. 常用工作方法总结(7S、SWOT分析、PDCA循环、SMART原则、6W2H、时间管理、WBS等)
  14. C 顺序表求交集和并集
  15. CSAPP 第三版 第四章 家庭作业and so on
  16. Nginx代理无法访问Nexus问题
  17. 以前开发中的一些记录
  18. 编写C语言程序:输入一个n,计算从1到n的和
  19. (汇总篇)语义SLAM相关开源方案| 全球优秀作者与实验室 | SLAM学习资料整理
  20. Lightly: 新一代的Python IDE

热门文章

  1. CF1253E Antenna Coverage
  2. cf1556E. Equilibrium
  3. P5212-SubString【LCT,SAM】
  4. nssl1489-大冰隙2【树链剖分,线段树】
  5. GDOI2020游记
  6. 欢乐纪中A组周六赛【2019.3.23】
  7. AtCoder Regular Contest 110 E.Shorten ABC——坑
  8. codeforces1452 E. Two Editorials
  9. 【贪心】雷达装置(ybtoj 贪心-1-2)
  10. [XSY] 简单的博弈题(博弈+dp+组合数+容斥)