zoukankan      html  css  js  c++  java
  • Base64加密解密原理以及代码实现

        1. Base64使用A--Z,a--z,0--9,+,/ 这64个字符.
        2. 编码原理:将3个字节转换成4个字节( (3 X 8) = 24 = (4 X 6) )先读入3个字节,每读一个字节,左移8位,再右移四次,每次6位,这样就有4个字节了.
        3. 解码原理:将4个字节转换成3个字节.先读入4个6位(用或运算),每次左移6位,再右移3次,每次8位.这样就还原了.

        Base64是一种非经常见的编码规范,其作用是将二进制序列转换为人类可读的ASCII字符序列,经常使用在需用通过文本协议(比方HTTP和SMTP)来传输二进制数据的情况下。Base64并非一种用于安全领域的加密解密算法(这类算法有DES等),虽然我们有时也听到使用Base64来加密解密的说法,但这里所说的加密与解密实际是指编码(encode)和解码(decode)的过程,其变换是非常easy的,只可以避免信息被直接识别。

       

        Base64採用了一种非常easy的编码转换:对于待编码数据,以3个字节为单位,依次取6位数据并在前面补上两个0形成新的8位编码,因为3*8=4*6,这样3个字节的输入会变成4个字节的输出,长度上添加�了1/3。

    上面的处理还不能保证得到的字符都是可见字符,为了达到此目的,Base64制定了一个编码表,进行统一的转换。码表的大小为2^6=64,这也是Base64名称的由来。

                                Base64编码表

          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
             

        Base64编解码算法都非常easy,网上有非常多源代码,这里就不介绍了。

        另外另一点要注意的地方,前面提到编码是以3个字节为单位,当剩下的字符数量不足3个字节时,则应使用0进行填充,对应的,输出字符则使用'='占位,因此编码后输出的文本末尾可能会出现1至2个'='。

    这是一种典型的编码转换的处理方法,相似的可能还有UTF16与UTF8之间的转换。 

  • 相关阅读:
    Nodejs初阶之express
    windows 下安装nodejs及其配置环境
    NodeJS、NPM安装配置与测试步骤(windows版本)
    nodejs npm常用命令
    系列文章--Node.js学习笔记系列
    系列文章--8天学通MongoDB
    python 特征选择 绘图 + mine
    TCP/IP 详解卷一
    CNN检测模型统计检出率
    leetcode 572. Subtree of Another Tree
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4084927.html
Copyright © 2011-2022 走看看