美文网首页
base64模块

base64模块

作者: AlgoPeek | 来源:发表于2017-06-04 21:48 被阅读0次

模块简介

base64是将任意二进制编码成文本字符串的一种编码算法。具体请参考RFC 3548.

编码原理

base64是基于64个可打印字符来表示二进制的表示方法,其64个可打印字符为:

                   Table 1: The Base 64 Alphabet

  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

其原理是对二进制进行分组,每三个字节为一组,一个字节有8bit,这样一组就有3x8=24bit, 然后针对这个24bit重新分成4组,即4x6=24bit。这样对新划分的四个组,每个组的二进制表示值(2^6=64)作为上表的索引,即为base64编码。

char:     |      A        |       B       |       C       |
ascii:    |0|1|0|0|0|0|0|1|0|1|0|0|0|0|1|0|0|1|0|0|0|0|1|1|
index:    |     16    |     20    |      9    |     3     |
base64:   |     Q     |     U     |      J    |     D     |   

从上面可以看出,经过base64编码后,3个字节的二进制长度会编码成4个字节的文本长度,长度增加了33%, 它带来的好处是编码后的文本数据可以在邮件正文、网页等直接显示。

如果待编码的二进制不是3的倍数,即最后可能剩下1个或2个字节如何处理呢?这个时候需要填充,填充规则:
末尾用0填充,再在末尾增加1个或2个"="

重要函数

先来看一下base64模块有多少可调用函数:

dir(base64)

用得比较多的就是:

  • base64.b64encode(s[, altchars])
  • base64.b64decode(s[, altchars])
  • base64.urlsafe_b64encode(s)
  • base64.urlsafe_b64decode(s)

标准base64编码中包含"+"和"/",并不适合在url传输,url编码为把"+"和"/"编码成%XX的形式,为了解决这个问题可以用urlsafe_b64encode和urlsafe_b64decode,它会将"+"和"/"改成"-"和"_"。

实例演示

python内置base64模块非常易于使用:

>>> import base64
>>> encode = base64.b64encode('ABC')
>>> print encode
QUJD
>>> decode = base64.b64decode(encode)
>>> print decode
ABC

更多参考

[1].https://docs.python.org/2/library/base64.html
[2].http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431954588961d6b6f51000ca4279a3415ce14ed9d709000
[3].http://blog.csdn.net/morewindows/article/details/11922473

相关文章

  • base64(二进制编解码)-常见内置模块

    由于看到hashlib模块中加密方法的应用。顺便也看了下常见的base64模块。 首先base64是将二进制...

  • Python常用模块之base64模块

    base64模块主要用于base64编码与base64解码。Base64是一种任意二进制到字符串的编码方法,常用于...

  • python的json,hashlib,base64模块

    这个章节我们主要来看json,haslib,base64模块,是python比较常用的模块,也是python在做项...

  • base64模块

    (一)base64模块的作用: Base64是一种基于64个可打印字符来表示二进制数据的表示方法,从本质上看...

  • base64模块

    模块简介 base64是将任意二进制编码成文本字符串的一种编码算法。具体请参考RFC 3548. 编码原理 bas...

  • base64模块

    base64是一种比较常见的二进制编码方法 编码原理:一个包含64个字符的数组['A','B',.....,'a'...

  • AttributeError错误

    问题:引入base64模块,结果出现如下问题: AttributeError: 'module' object h...

  • Python3内置模块之base64编解码方法小结

    Python3内置模块之base64编解码方法小结 概述 Base64 是网络上最常见的用于传输 8Bit 字节码...

  • Python加密—HMACSHA1 加密

    1、HMACSHA1 加密通过hmac模块实现,需要一个key 2、HMACSHA1加密,返回Base64编码

  • python学习-base64模块

    Base64是一种用64个字符来表示任意二进制数据的方法。 用记事本打开exe、jpg、pdf这些文件时,我们都会...

网友评论

      本文标题:base64模块

      本文链接:https://www.haomeiwen.com/subject/iocbfxtx.html