概述
base64 說起來大家應該都是很熟悉的,很多類型的數據都可以轉成base64的編碼規則,例如圖片,pdf,文本,郵件內容等。
什么是base64
根據RFC2045的定義,base64被定義為:base64內容傳送編碼被設計用來把任意系列的8位字節描述為一種不易被人直接識別的形式 簡單來說,就是一種用64個字符來表示二進制數據的方法。
有啥作用
由於某些系統只能使用ASCII字符,base64就是用來將非ASCII字符的數據轉換成ASCII字符的一種方法。
用記事本打開exe,jpg,pdf這些文件時,我們都會看到一大堆亂碼,因為二進制文件包含很多無法顯示和打印的字符,所以,如果要讓文本軟件能處理二進制數據,就需要一個二進制到字符串的轉換方法,而base64 就是最常見的一個方法。特別適合在http,mime協議下快熟傳輸數據
base64其實不是安全領域下的加密解密算法,雖然有時候能看到所謂的base64加密解密,其實這頂多算是一個編碼算法,雖然編碼之后不能直接看到原文,但是這種方式很初級。
啥原理
base64的編碼方法要求把每三個8bit的字節轉換成四個6bit的字節,其中,轉換之后的這四個字節中每6個bit為有效數據,空余的那兩個補零成為一個字節。如果要編碼的二進制數據不是3的倍數,最后剩下一個或者兩個字節怎么辦呢?base64會在末尾補零,再在編碼的末尾加上一個或者兩個‘=’。
簡單的python實現
這邊說明下,我這里用的是python2.7
運行之后結果如下:
# coding: utf-8 # 引入模塊 import base64 encodeStr = '廚房小碼農' # 加密 s1 = base64.b64encode(encodeStr) # 解密 s2 = base64.b64decode(s1) print s1 print s2