說明
base64的作用是將二進制使用64個字符串來表示。
64個字符指的是如下的字符:
即26個大寫英文字符+26個小寫英文字符+10個數字+“+”+“/”,共計64個字符。
但是實際上還有一個“=”,它用作填充。
爲什麼要用base64,原因有幾點:
1. 不可見字符在傳遞過程中可能被忽略,導致數據異常;
2. 某些字符有特殊含義(比如轉移字符),可能導致處理異常;
3. 純文本協議需要使用;
4. 加密的時候可能會用到;
關於base64的原理,這裏不做介紹。
使用
通過包含base64來使用相關的編解碼操作:
import base64
通過help可以查看base64模塊的內容:
import base64
if __name__ == "__main__":
help(base64)
具體如下:
FUNCTIONS
b16decode(s, casefold=False)
Decode a Base16 encoded string.s is the string to decode. Optional casefold is a flag specifying whether
a lowercase alphabet is acceptable as input. For security purposes, the
default is False.The decoded string is returned. A TypeError is raised if s is
incorrectly padded or if there are non-alphabet characters present in the
string.b16encode(s)
Encode a string using Base16.s is the string to encode. The encoded string is returned.
b32decode(s, casefold=False, map01=None)
Decode a Base32 encoded string.s is the string to decode. Optional casefold is a flag specifying whether
a lowercase alphabet is acceptable as input. For security purposes, the
default is False.RFC 3548 allows for optional mapping of the digit 0 (zero) to the letter O
(oh), and for optional mapping of the digit 1 (one) to either the letter I
(eye) or letter L (el). The optional argument map01 when not None,
specifies which letter the digit 1 should be mapped to (when map01 is not
None, the digit 0 is always mapped to the letter O). For security
purposes the default is None, so that 0 and 1 are not allowed in the
input.The decoded string is returned. A TypeError is raised if s were
incorrectly padded or if there are non-alphabet characters present in the
string.b32encode(s)
Encode a string using Base32.s is the string to encode. The encoded string is returned.
b64decode(s, altchars=None)
Decode a Base64 encoded string.s is the string to decode. Optional altchars must be a string of at least
length 2 (additional characters are ignored) which specifies the
alternative alphabet used instead of the '+' and '/' characters.The decoded string is returned. A TypeError is raised if s is
incorrectly padded. Characters that are neither in the normal base-64
alphabet nor the alternative alphabet are discarded prior to the padding
check.b64encode(s, altchars=None)
Encode a string using Base64.s is the string to encode. Optional altchars must be a string of at least
length 2 (additional characters are ignored) which specifies an
alternative alphabet for the '+' and '/' characters. This allows an
application to e.g. generate url or filesystem safe Base64 strings.The encoded string is returned.
decode(input, output)
Decode a file.decodestring(s)
Decode a string.encode(input, output)
Encode a file.encodestring(s)
Encode a string into multiple lines of base-64 data.standard_b64decode(s)
Decode a string encoded with the standard Base64 alphabet.Argument s is the string to decode. The decoded string is returned. A
TypeError is raised if the string is incorrectly padded. Characters that
are not in the standard alphabet are discarded prior to the padding
check.standard_b64encode(s)
Encode a string using the standard Base64 alphabet.s is the string to encode. The encoded string is returned.
urlsafe_b64decode(s)
Decode a string using the URL- and filesystem-safe Base64 alphabet.Argument s is the string to decode. The decoded string is returned. A
TypeError is raised if the string is incorrectly padded. Characters that
are not in the URL-safe base-64 alphabet, and are not a plus '+' or slash
'/', are discarded prior to the padding check.The alphabet uses '-' instead of '+' and '_' instead of '/'.
urlsafe_b64encode(s)
Encode a string using the URL- and filesystem-safe Base64 alphabet.Argument s is the string to encode. The encoded string is returned. The
alphabet uses '-' instead of '+' and '_' instead of '/'.
函數挺多,但是離不開編碼和解碼兩種。這裏只簡單舉例:
import base64
if __name__ == "__main__":
# help(base64)
str = "#@$#^*^%$*&^*^&%((&^)^&)(*&_) (*^&^$%^%#"
enc = base64.b64encode(str)
dec = base64.b64decode(enc)
print enc
print dec
對應的打印結果:
I0AkI14qXiUkKiZeKl4mJSgoJl4pXiYpKComXykgICAgICgqXiZeJCVeJSM=
#@$#^*^%$*&^*^&%((&^)^&)(*&_) (*^&^$%^%#