python中base64模組的加解密函式
Base64模組簡介
Base64是一種基於64個可列印字元來表示二進位制資料的表示方法。Base64常用於在通常處理文字資料的場合,表示、傳輸、儲存一些二進位制資料(或不可列印的字串)。包括MIME的email,email via MIME, 在XML中儲存複雜資料。
在郵件中的用途:
在MIME格式的電子郵件中,base64可以用來將binary的位元組序列資料編碼成ASCII字元序列構成的文字。使用時,在傳輸編碼方式中指定base64。使用的字元包括大小寫字母各26個,加上10個數字,和加號“+”,斜槓“/”,一共64個字元,等號“=”用來作為字尾用途。
在URL中的用途:
標準的Base64並不適合直接放在URL裡傳輸,因為URL編碼器會把標準Base64中的“/”和“+”字元變為形如“%XX”的形式, 而這些“%”號在存入資料庫時還需要再進行轉換,因為ANSI SQL中已將“%”號用作萬用字元。
為解決此問題,可採用一種用於URL的改進Base64編碼,它不在末尾填充'='號,並將標準Base64中的“+”和“/”分別改成了“*”和“-”,這樣就免去了在URL編解碼和資料庫儲存時所要作的轉換,避免了編碼資訊長度在此過程中的增加,並統一了資料庫、表單等處物件識別符號的格式。簡單的說:就是讓字串了可以安全的通過URL傳輸,那句就是把原先base64編碼後的字串中的 + 換成 - , / 換成 _ , = 則保留。
另有一種用於正則表示式的改進Base64變種,它將“+”和“/”改成了“!”和“-”,因為“+”,“*”在正則表示式中都可能具有特殊含義。
一. base64模組中的加解密函式
加解密函式中替換符號字元的功能:
因為base64編碼後的字元除了英文字母和數字外還有三個字元 ‘ + ’, ‘ / ’, ’ = ’, 其中 ’ = ’只是為了補全編碼後的字元數為4的整數,而’ + ’和’ / ’在一些情況下需要被替換的,b64encode和b64decode正是提供了這樣的功能。至於什麼情況下’ + ’和’ / ’需要被替換,最常見的就是對url進行base64編碼的時候。urlsafe_b64encode和urlsafe_b64decode 一組,這個就是用來專門對url進行base64編解碼的,實際上也是呼叫的前一組函式。
- b16decode(s, casefold=False) 函式
功能:解碼一個Base16編碼的字串
說明:s是要解碼的字串,casefold(可選)是一個標誌,指定是否輸入小寫字母,考慮到安全,預設值是false。 這個函式會返回解碼後的字串,如果s發生錯誤或者不是字串,那麼返回TypeError。
- b16encode(s) 函式
功能:編碼一個Base16編碼的字串
說明:s是要進行編碼的字串,函式返回編碼後的字串。
程式碼: 結果:
2.b32decode(s, casefold=False, map01=None) 函式
功能: 解碼一個Base32編碼的字串
說明: 同b16decode(s, casefold=False) , 可選引數’map01’(預設是None),如果它不是None的話,數字0會被對映成字母O,數字1會被對映成字母L或者I
- b32encode(s) 函式
功能:一個字串使用Base32編碼
程式碼:
結果:因為有這句話
會出現如下錯誤:
這是因為 這句話中第二個引數是False,不接收小寫字母,會出現錯誤,第二個引數如果是True的話, 接收小寫字母,不會出現錯誤。註釋掉這句話的結果是:(結果正確)
- b645.decode(s, altchars=None) 函式
功能:解碼一個Base64的字串,有關可選引數altchars請參看
- b64encode(s, altchars=None) 函式
功能:編碼一個Base64的字串,有關可選引數altchars請參看
- decodestring(s) 函式
功能:解碼一個字串,它要包含一行或多行base64的加密資料返回解碼後的二進位制資料。
- encodestring(s) 函式
功能:編碼一個字串,編碼成多行的base-64資料。
程式碼:
結果:
- encode(input, output) 函式
功能:編碼一個input檔案,把結果的二進位制資料讀取到output中,
input和output是檔案,當input讀取到空字串的時候返回。
10.decode(input, output) 函式
功能:解碼一個input檔案,把結果的二進位制資料讀取到output中,
input和output是檔案,當input讀取到空字串的時候返回。
程式碼:
11.urlsafe_b64decode(s) 函式
功能:解碼一個使用url-safe的base64的字母表的字串,詳情參看base64在URL中的用途。
12.urlsafe_b64encode(s) 函式
功能:編碼一個使用url-safe的base64的字母表的字串,詳情參看base64在URL中的用途。
程式碼:
結果:
二.python中的md5和SHA1加密演算法使用
MD5
MD5是一種不可逆的加密演算法,目前是最牢靠的加密演算法之一,尚沒有能夠逆運算的程式被開發出來,它對應任何字串都可以加密成一段唯一的固定長度的程式碼。
SHA1
SHA1的全稱是Secure Hash Algorithm(安全雜湊演算法) , SHA-1比MD5多32位密文,所以更安全。
用法例項:
python中的hashlib模組是個專門提供hash演算法的庫,現在裡面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常簡單、方便。用法如下:
注:with語句的作用:試圖開啟一個檔案,如果正常把值返回給fp。
三. 使用python進行加密解密AES演算法
在此我們將使用到PyCrypto模組,可以訪問 http://www.pycrypto.org/ 來獲得此模組。該模組包括多種加密演算法,如AES、MD5、SHA等。
程式碼:
From: http://www.cnblogs.com/changzhi/archive/2013/01/23/2873377.html