例子

  • macOS 终端输入:echo d3d3LmNuYmxvZ3MuY29tL3poZW5nYmlu | base64 -D
  • Linux 终端输入:echo d3d3LmNuYmxvZ3MuY29tL3poZW5nYmlu | base64 -d

查看输出

什么是base64?

Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法。可查看 RFC2045~RFC2049,上面有 MIME 的详细规范。

base 64 使用 A-Z、a-z、0-9、+、\,这 64 个字符组成

应用

用 Telnet 客户端远程登录邮件服务器时,提示输入用户名、密码的提示信息和输入的用户名密码信息,是通过 base64 进行编码的

原理

原理是将 3 字节转换成 4 字节(3*8=24=4*6)

  • 3 * 8 = 24 = 4 * 6 的含义就是,3 个字节是 24 位,可分为 4 组,每组 6 位,又因为 6 位不能表示一字节,所以在头部补两个 0
  • 将字符串转换为对应的 ascii 编码,再将 ascii 编码转换为二进制
  • 每次读取六位,不足的用 0 补位
  • 因为是 3 字节 转 4 字节,如果字符串不满 3 字节(3 * 8 = 24 位)则用 = 字符补全

举例:

  1. "A":
    1. 对应的 ascii 为 65,65 对应的二进制为 01000001
    2. 只有 1 字节,8 位,那么需要在二进制后补 4 位,8 + 4 = 12 = 2 * 6,也就是补 4 位后,只组成了两组(2个字节),base 64 原理是将 3 字节转为 4 字节,所以剩下的两个字节用 = 字符代替
    3. 最终 A 加密后为:QQ==
  2. "AS":
    1. ascii 分别为 65、83
    2. 转换为二进制为 01000001、01010011
    3. 2 * 8 = 16 + 2 = 3 * 6
    4. 所以,将二进制分为 3 组,每组 6 位,少的两位,末尾补 0
    5. 也就是 010000、010101、001100 这 3 组
    6. 然后对这 3 组的首位进行补 0,即 00010000、00010101、00001100
    7. 对应对照表即:QVM,又因为是 3 字节转 4 字节,所以部 =
    8. 最终结果就是 QVM=

经过了上面两个例子,发现 2 个字节加密后就是 4 个字节,1 个字节加密后也是 4 个字节

参考资料

[1] Base64加密原理(转)

base64 数据编码原理的更多相关文章

  1. 二进制;16进制; Byte , Python的bytes类; Base64数据编码; Bae64模块;

    参考:中文维基 二进制 位操作(wiki) Byte字节 互联网数据处理:Base64数据编码 Python的模块Base64 16进制简介 python: bytes对象 字符集介绍:ascii 二 ...

  2. BASE64编码原理分析脚本实现及逆向案例

    在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理你又了解多少?今天小编带大家了解一下Base64编码原理分析脚本实现及逆向案例的相关内容.   01编码由来 数 ...

  3. 一篇文章彻底弄懂Base64编码原理

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

  4. Atitit.Base64编码原理与实现设计

    Atitit.Base64编码原理与实现设计 1. Base64编码1 1.1. 为什么要用自己的base64编码方案1 2. Base64编码由来1 3. Base64编码原理1 3.1. 具体来说 ...

  5. C# 处理base64 以及base64的原理分析

    base64的原理, http://www.cnblogs.com/diligenceday/p/6002382.html http://www.cnblogs.com/chengxiaohui/ar ...

  6. 一篇文章彻底弄懂Base64编码原理(转载)

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

  7. Base64编码原理及应用

    最近在做一个H5上传图片并压缩的项目,其过程主要是先将图片上传通过readAsDataURL获取上传图片base64编码,然后根据高宽比将图片画到canvas上实现压缩,在通过toDataURL获取压 ...

  8. 知识扩展——(转)一篇文章彻底弄懂Base64编码原理

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

  9. Base64 编码原理

    什么是 Base64 编码 Base64 编码是最常见的编码方式,基于 64 个可打印字符来表示任意二进制数据的方法,是从二进制转换到可见字符的过程. 使用场景 数据加密或签名通过 Base64 转换 ...

随机推荐

  1. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...

  2. C++转型操作符

    转:http://www.cnblogs.com/hazir/archive/2012/04/14/2447251.html 旧式的C转型方式,几乎允许你将任何类型转换为任何其它类型,有其自身的缺陷, ...

  3. JS获取整个网页html代码

    var test=document.getElementsByTagName('html')[0].innerHTML; alert(test);

  4. C 语言整型谜题

    如题,此篇文章是描述C语言中的整数谜题. 假定机器字长是32位的,用2的补码表示整数.对以下C表达式,请问它们在所有情况下都正确吗?如果不是,请给出反例. 初始化: 1 2 3 4 int x = f ...

  5. nginx 配置支持URL HTML5 History 模式 与 设置代理

    拾人牙慧:https://segmentfault.com/q/1010000007140360 nginx 配置支持URL HTML5 History 模式 location / { try_fil ...

  6. matlab中xlsread函数的bug

    在使用[num txt data]=xlsread('filename')时.num存所有数值型数据,非数值型用NaN表示,txt存非数值型数据,数值型数据的位置为空. 如果filename中的第一行 ...

  7. Guid ToString 格式

    转自 http://www.cnblogs.com/greenerycn/archive/2010/04/25/guid_tostring_format.html 在日常编程中,Guid是比较常用的, ...

  8. tomcat重启步骤

    tomcat重启步骤1.切换到tomcat目录cd /home/tomcat-home/tomcat-erp/bin2.关闭tomcatsh shutdown.sh3.启动tomcatsh start ...

  9. Atitti 过程导向 vs 结果导向 attilax的策略

    Atitit  世界著名零食 1.1. /////milk hand candy , milk soft candy . fruit soft candy1 1.2. ==========cookie ...

  10. spark repartition

    https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-rdd-partitions.html http://s ...