zoukankan      html  css  js  c++  java
  • base64 数据编码原理

    例子

    • 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加密原理(转)

  • 相关阅读:
    mac下chrome快捷键,vscode快捷键
    css3 rgba()/opacity()
    sublime 将打字内容放在屏幕中央
    HDU 1427 速算24点【数值型DFS】
    HDU 1015 Safecracker【数值型DFS】
    HDU 2553 N皇后问题【棋盘型DFS】
    HDU 2660 Accepted Necklace【数值型DFS】
    2016中国大学生程序设计竞赛
    DFS之奇偶剪枝
    G
  • 原文地址:https://www.cnblogs.com/zhengbin/p/7535177.html
Copyright © 2011-2022 走看看