zoukankan      html  css  js  c++  java
  • Base64编码 概念和用途

    Base64概念

    什么是Base64?

    依照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把随意序列的8位字节描写叙述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)


    Base64作用

    因为某些系统中仅仅能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法。


    base64特别适合在http。mime协议下高速数据传输。

    base64事实上不是安全领域下的加密解密算法。尽管有时候常常看到所谓的base64加密解密。事实上base64仅仅能算是一个编码算法。对数据内容进行编码来适合传输。尽管base64编码过后原文也变成不能看到的字符格式,可是这样的方式非常0基础,非常easy。



    Base64原理

    Base64编码方法要求把每三个8Bit的字节转换为四个6Bit的字节,当中,转换之后的这四个字节中每6个有效bit为是有效数据,空余的那两个 bit用0补上成为一个字节。因此Base64所造成数据冗余不是非常严重。Base64是当今比較流行的编码方法。由于它编起来速度快并且简单

     举个样例,有三个字节的原始数据:aaaaaabb bbbbccccc ccdddddd(这里每一个字母表示一个bit位)
      那么编码之后会变成:      00aaaaaa 00bbbbbb 00cccccc 00dddddd

    所以能够看出base64编码简单,尽管编码后不是明文,看不出原文。可是解码也非常easy


    为什么要使用Base64?

    在设计这个编码的时候,我想设计人员最主要考虑了3个问题:
    1.是否加密?
    2.加密算法复杂程度和效率
    3.怎样处理传输?

    加密是肯定的。可是加密的目的不是让用户发送很安全的Email。这样的加密方式主要就是“防君子不防小人”。即达到一眼望去全然看不出内容就可以。


    基于这个目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是怎样收发Email,而并非怎样安全的收发Email。因此算法的复杂程度要小。效率要高。否则由于发送Email而大量占用资源。路就有点走歪了。



    可是,假设是基于以上两点,那么我们使用最简单的恺撒法就可以。为什么Base64看起来要比恺撒法复杂呢?这是由于在Email的传送过程中。由于历史原因,Email仅仅被同意传送ASCII字符,即一个8位字节的低7位。因此,假设您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通过有“历史问题”的网关时就可能会出现故障。

    网关可能会把最高位置为0!

    非常明显。问题就这样产生了!因此,为了可以正常的传送Email,这个问题就必须考虑!所以。单单靠改变字母的位置的恺撒之类的方案也就不行了。关于这一点可以參考RFC2046。
    基于以上的一些主要原因产生了Base64编码。


    算法实现

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    java内存区域
    [POJ] John‘s trip | 欧拉回路 | 边序列字典序最小 + 建图
    [POJ | Nowcoder] Watchcow | 欧拉回路 点路径输出
    [UPC | 山东省赛] The Largest SCC | Tarjan强连通分量瞎搞 + 状态还原
    [Luogu] 炸铁路 | Tarjan 割边
    [HDU 4738] Caocao‘s Bridges | Tarjan 求割边
    [Codeforces 1586] Omkar and Determination | 思维前缀和
    [UVA 1599] Ideal Path | 细节最短路
    [North Central NA Contest 2018] Rational Ratio | 规律 细节模拟
    [HDU 7136] Jumping Monkey | 并查集 | 逆向思维
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4749878.html
Copyright © 2011-2022 走看看