Python中的base64模塊


  本文介紹Python 2.7中的base64模塊,該模塊提供了基於rfc3548的Base16, 32, 64編解碼的接口。官方文檔,參考這里

  該模塊提供兩套接口,傳統接口基於rfc1521的Base64,當前接口基於rfc3548的Base16/32/64編碼規范,本文只介紹當前的接口。

  當前接口在Python 2.4中就被引進,關於Base64編碼格式提供了以下六種接口,便於高效靈活地實現需要的編解碼工作。

1. b64encode(s, altchars=None)
2. b64decode(s, altchars=None)
3. standard_b64encode(s)
4. standard_b64decode(s)
5. urlsafe_b64encode(s)
6. urlsafe_b64decode(s)

 

  其中以"*encode"結尾的方法用於將二進制串轉為base64編碼格式的字符串,以“*decode”結尾的方法用於將base64格式的字符串重新轉為二進制串。

 

  我們詳細查看前兩個方法,注意到b64encode()和b64decode()接收同樣形式的參數。其中 s 是要編/解碼的字符串;默認參數altchars的可選值必須是長度至少兩字節的字符串(第二個字符后的內容將被忽略),該方法表示在編/解碼過程中將使用參數altchars中的前兩個字符替換標准Base64字符集中的'+'和'/'。

  因此方法3和4中的base64.standard_b64encode(s)和base64.standard_b64decode(s)等價於base64.b64encode(s)和base64.b64decode(s)。而方法5和6中的base64.urlsafe_b64encode(s)和base64.urlsafe_b64decode(s)分別等價於base64.b64encode(s , '-_')和base64.b64decode(s , '-_'),即在編/解碼過程中使用'-'和'_'替代標准Base64字符集中的'+'和'/',生成可以在URL中使用的Base64格式文本。

  使用示例:

 1 >>> import base64
 2 >>> print base64.b64encode('Hello, I am Darren!') 
 3 SGVsbG8sIEkgYW0gRGFycmVuIQ==
 4 >>>
 5 >>> print base64.b64decode('SGVsbG8sIEkgYW0gRGFycmVuIQ==')
 6 Hello, I am Darren!
 7 >>>
 8 >>> print base64.b64encode('i\xb7\x1d\xfb\xef\xff')
 9 abcd++// 
10 >>> 
11 >>> print base64.b64encode('i\xb7\x1d\xfb\xef\xff', '-_') 
12 abcd--__ 
13 >>> 
14 >>> print base64.urlsafe_b64encode('i\xb7\x1d\xfb\xef\xff') 
15 abcd--__ 
16 >>>
17 >>> base64.urlsafe_b64decode('adcd--__') 
18 'i\xb7\x1d\xfb\xef\xff'

 

  本模塊還提供了Base32和Base16編解碼接口:  

1. b32encode(s)    
2. b32decode(s, casefold=False, map01=None)  

  Base16編解碼:

1. b16encode(s)
2. b16decode(s, casefold=False)

  其中參數s都是要編/解碼的字符串,關於Base16/32編碼規范,請參考rfc4648rfc3548,本文只關注Base64。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM