python的一些加密方法及python 加密模組
python的一些加密方法及python 加密模組
1base64
Python內建的base64模組可以實現base64、base32、base16、base85、urlsafe_base64的編碼解碼,python 3.x通常輸入輸出都是二進位制形式,2.x可以是字串形式。
base64模組的base64編碼、解碼呼叫了binascii模組,binascii模組中的b2a_base64()函式用於base64編碼,binascii模組中的a2b_base64()函式用於base64解碼。
2.md5
Python2.x中有md5模組,此模組呼叫了hashlib模組,python3.x已中將md5取掉,直接通過呼叫hashlib模組來進行md5。Python2.x可以直接使用unicode字元,但3.x中必須使用二進位制位元組串。
3.sha1
類似於MD5
4.crc32
計算指定內容的crc32校驗值,可以用zlib以及binascii模組的crc32函式.
ps:下面看下Python之加密模組
hashlib模組
•加密方式以md5方式加密舉例
•是標準模組,直接匯入即可
•還有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密後的字串長度更長,安全性更高
一、加密步驟
1、字串先轉成二進位制型別
使用.encode()方法轉成二進位制型別
2、使用加密方法
使用.hexdigest()方法輸出加密後內容
3、列印加密後的內容
使用dir()內建函式顯示該變數的所有方法
由於該模組pycharm無法提供提示方法,即輸入m“.”不出來方法,所以可以使用內建函式dir(),將所有方法打印出來。
#print(dir(m)) #由於這個加密模組pycharm提供不了提示方法,所以如果想知道都有什麼方法,可以使用內建函式dir(),使用這條語句就能打印出所有方法了
print(m.hexdigest())
二、加密相關
1、檢驗加密結果
•由於md5方式加密完的字串無論原字串有多長都是32位,因此可以使用len()方法檢驗是否加密成功:
print(len(m.hexdigest())
2、md5加密之後是不可逆的
•網路上可以解密的原理是撞庫,即:將常用的密碼加密完存在資料庫裡,然後直接搜庫。
如果輸入的加密後密碼碰巧資料庫裡有,就能把對應的加密前密碼返回給你,並不是真正的解密。
3、其他的加密方式
本文的加密方式以md5方式加密舉例,還有其他的加密方式,比如:.sha1()、.sha224()、.sha256()等,加密後的字串長度更長,安全性更高。
m=hashlib.sha1(password.encode())#不同的加密方式
m=hashlib.sha224(password.encode()) #不同的加密方式
m=hashlib.sha256(password.encode()) #不同的加密方式
三、加鹽
原理:
如果要對password=123456加密,這個明文密碼太簡單,容易撞庫解密,所以在123456之後隨機加一個字串,比如abc,這樣實際是對123456abc進行加密,如果不知道abc這個字串,反解的可能性降低,安全性更高。這樣的一個字串就叫做鹽。
四、實際應用
#實現加密:傳入一個值,如果有鹽值,則加鹽加密;否則直接加密
def my_md5(s:str,salt=None):
s=str(s)
if salt:
s=s+salt
m=hashlib.md5(s.encode())
return m.hexdigest()