zoukankan      html  css  js  c++  java
  • base 64编码

    base 64简介

    base64是一种用64个字符来表示任意二进制数据的方法。

    base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而可以合法地作为首部字段值。base 64编码将用户输入或二进制数据,打包成一种安全格式,将其作为HTTP首部字段的值发送出去,而无须担心其中包含会破坏HTTP分析程序的冒号、换行符或二进制值。

    官方文档地址:RFC3548

    base 64编码过程

    base 64编码将一个8位子节序列拆散为6位的片段,并为每个6位的片短分配一个字符,这个字符是base 64字母表中的64个字符之一。这64个字符中包括大小写字母、数字、+和/,同时还包括了特殊字符=。具体内容如下:

    Value Encoding Value Encoding Value Encoding Value Encoding
    0 A 17 R 34 i 51 z
    1 B 18 S 35 j 52 0
    2 C 19 T 36 k 53 1
    3 D 20 U 37 l 54 2
    4 E 21 V 38 m 55 3
    5 F 22 W 39 n 56 4
    6 G 23 X 40 o 57 5
    7 H 24 Y 41 p 58 6
    8 I 25 Z 42 q 59 7
    9 J 26 a 43 r 60 8
    10 K 27 b 44 s 61 9
    11 L 28 c 45 t 62 +
    12 M 29 d 46 u 63 /
    13 N 30 e 47 v --- ---
    14 O 31 f 48 w (pad) = ---
    15 P 32 g 49 x --- ---
    16 Q 33 h 50 y --- ---

    以“Hello!”为例,他的ASCII对应关系如下:

    hello.jpg{:width="50%"}

    可知 Hello! 的Base64编码结果为 SGVsbG8h ,原始字符串长度为6个字符,编码后长度为8个字符,每3个原始字符经Base64编码成4个字符,编码前后长度比4/3,这个长度比很重要 - 比原始字符串长度短,则需要使用更大的编码字符集,这并不我们想要的;长度比越大,则需要传输越多的字符,传输时间越长。Base64应用广泛的原因是在字符集大小与长度比之间取得一个较好的平衡,适用于各种场景。

    Base64编码是每3个原始字符编码成4个字符,如果原始字符串长度不能被3整除,需要使用0值来补充原始字符串:

    fill.jpg{:width="50%"}

    标准Base64编码通常用 = 字符来替换最后的 A,即编码结果为 SGVsbG8hIQ==。因为 = 字符并不在Base64编码索引表中,其意义在于结束符号,在Base64解码时遇到 = 时即可知道一个Base64编码字符串结束。



    日月更迭,时空变换,我只是一只蜗牛,追寻着最后一刻的灿烂
  • 相关阅读:
    数据结构与算法(C++)之swap交换
    常用shell脚本
    Java知识库
    jenkins:你们是怎么在控制台实时打印服务启动日志的?
    mqtt压力测试工具emqtt
    postman中获取环境变量和全局变量
    不想当将军的士兵不是好士兵吗?
    永久关闭火狐浏览器自动更新的方法
    性能测试案例:线程池拒绝策略使用不当导致并发一上去就会出现大量报错
    性能测试案例:一个频繁fgc问题
  • 原文地址:https://www.cnblogs.com/TheSnailTowardTheSun/p/8295174.html
Copyright © 2011-2022 走看看