zoukankan      html  css  js  c++  java
  • Base64

     Base64作用

    a)所有的二进制文件,都可以因此转化为可打印的文本编码,使用文本软件进行编辑;

    b)能够对文本进行简单的加密。

    c)Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法

    Base64可以用来将非ASCII的字节序列数据编码成ASCII字符序列构成的文本,Base64将三个字节转化成四个字节,因此Base64编码后的文本,会比原文本多1/3

    第一步,将每三个字节作为一组,一共是24个二进制位。

    第二步,将这24个二进制位分为四组,每个组有6个二进制位。

    第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节。

    第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值。

    Base64序号:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

    Base64编码:  0                                               25                                                        63

    
    

    2.英文的base64编码

    关键:将这个24位的二进制字符串分成4组,每组6个二进制位:010011、    010110、   000101、   101110。

    在每组前面加两个00,扩展成32个二进制位,即四个字节:  00010011、00010110、00000101、00101110。

    它们的十进制值分别是19、22、5、46。

    一、处理字节数不足三的情况

    a)二个字节的情况:将这二个字节的一共16个二进制位,转成三组,最后一组除了前面加00以外,后面也要加00。

    这样得到一个三位的Base64编码,再在末尾补上一个"="号。

    比如"Ma": 01001101 01100001转化成00010011、00010110、00010000以后,

    对应Base64值分别为T、W、E,再补上一个"="号,因此"Ma"的Base64编码就是TWE=。

    b)一个字节的情况:将这一个字节的8个二进制位,转成二组,最后一组除了前面加00以外,后面再加0000。

    这样得到一个二位的Base64编码,再在末尾补上两个"="号。

    比如"M":  01001101转化为00010011、00010000

    对应的Base64值分别为T、Q,再补上二个"="号,因此"M"的Base64编码就是TQ==。

    二、中文的base64编码

    汉字"严"如何转化成Base64编码?不同的编码(gb2312、utf-8、gbk)的Base64对应值不一样。

    下面的例子以utf-8为例。

    首先,"严"的utf-8编码为E4B8A5,写成二进制就是三字节的

    11100100 10111000 10100101

       111001      001011       100010      100101

    00111001  00001011   00100010   00100101

    相应的十进制数为57、11、34、37,它们对应的Base64值就为5、L、i、l。

    参考:

    漫画:什么是Base64算法

  • 相关阅读:
    php扩展开发函数
    python里面的引用
    apk的包名修改
    python3.3中print换行
    Project Euler Problem4
    Project Euler Problem5
    Project Euler Problem3
    通过电脑来访问手机站点——UserAgent和UserDataDir的应用
    LJX的校园:社会实践的任务
    连续和最大
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3900628.html
Copyright © 2011-2022 走看看