1. 程式人生 > 其它 >python的一些加密方法及python 加密模組

python的一些加密方法及python 加密模組

技術標籤: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()