zoukankan      html  css  js  c++  java
  • Base64编码算法

    转载:http://www.cnblogs.com/xqxacm/p/4886299.html

    一、什么是编码解码

      编码:利用特定的算法,对原始内容进行处理,生成运算后的内容,形成另一种数据的表现形式,可以根据算法,再还原回来,这种操作称之为编码。

      解码:利用编码使用的算法的逆运算,对经过编码的数据进行处理,还原出原始数据,这种操作称之为解码。

    二、什么是Base64编码算法

      可以将任意的字节数组数据,通过算法,生成只有(大小写英文、数字、+、/)(一共64个字符)内容表示的字符串数据。

      即将任意的内容转换为可见的字符串形式。

    三、Base64算法的由来

      以前发送邮件只支持可见字符的传送。由此,需要有一个方法将不可见的字符转换为可见的字符,便产生了Base64编码算法

    四、Base64算法的特点

    1、将数据按照 3个字节一组的形式进行处理,每三个字节在编码之后被转换为4个字节。

      即:如果一个数据有6个字节,可编码后将包含6/3*4=8个字节

    2、当数据的长度无法满足3的倍数的情况下,最后的数据需要进行填充操作,即补“=” ,这里“=”是填充字符,不要理解为第65个字符

    eg: 三个字节 ,转换成 4个字节 的过程:

      

    可以看出,将原始数据的 每三个字节分为一组,按位进行分割为 每6位一个字节的形式,进行转换,形成新的4个字节。这四个字节才通过Base64编码表进行映射,形成最后实际的Base64编码结果。

    如果原始数据最后无法凑成3个字节,则补填充,以“=”作为替换,代表没有数据

    五、

    Base64编码索引表

    六、Base64使用场景

    1、服务器给客户端在JSON中传递二进制数据

    2、客户端给服务器传递参数时,通过Base64传递二进制内容

    七、注意点

    1、Base64是编码算法,不是加密算法,只是用来编码字节数组,形成字符串的,并提供了解码功能

    2、Base64.encodeToString(byte[] data,int flag);

    第二个参数设置NO_WRAP 即代表生成的字符串是否换行

    Base64.encode(String str,int flag)同上

  • 相关阅读:
    Linux安装cx_Oracle
    LVM分区
    命令行重启远程桌面服务
    常用Linux命令
    自动清理N天前的二进制日志
    MySQL常用操作
    Java里的堆(heap)栈(stack)和方法区(method)
    SpringMVC 八大注解
    Spring Cloud原理详解
    java线程的生命周期及五种基本状态
  • 原文地址:https://www.cnblogs.com/songjy2116/p/7750234.html
Copyright © 2011-2022 走看看