Python之 加密模塊

hashlib模塊

  • 加密方式以md5方式加密舉例
  • 是標準模塊,直接導入便可
  • 還有其餘的加密方式,好比:.sha1()、.sha224()、.sha256()等,加密後的字符串長度更長,安全性更高

1、加密步驟

一、字符串先轉成二進制類型數據庫

使用.encode()方法轉成二進制類型安全

import hashlib
password='123456'
print(password.encode())#字符串不能直接加密,要先轉成二進制類型的才能夠加密
#結果爲:b'123456'

 

二、使用加密方法網絡

使用.hexdigest()方法輸出加密後內容函數

import hashlib
password='123456'
m=hashlib.md5(password.encode()) #先轉成二進制,再加密
#print(dir(m)) #因爲這個加密模塊pycharm提供不了提示方法,因此若是想知道都有什麼方法,可使用內置函數dir(),使用這條語句就能打印出全部方法了
print(m.hexdigest())

#結果:e10adc3949ba59abbe56e057f20f883e

 

三、打印加密後的內容加密

使用dir()內置函數顯示該變量的全部方法spa

因爲該模塊pycharm沒法提供提示方法,即輸入m「.」不出來方法,因此可使用內置函數dir(),將全部方法打印出來。code

#print(dir(m)) #因爲這個加密模塊pycharm提供不了提示方法,因此若是想知道都有什麼方法,可使用內置函數dir(),使用這條語句就能打印出全部方法了
print(m.hexdigest())

 

2、加密相關

一、檢驗加密結果blog

  • 因爲md5方式加密完的字符串不管原字符串有多長都是32位,所以可使用len()方法檢驗是否加密成功:
print(len(m.hexdigest()))

二、md5加密以後是不可逆的md5

  • 網絡上能夠解密的原理是撞庫,即:將經常使用的密碼加密完存在數據庫裏,而後直接搜庫。

若是輸入的加密後密碼碰巧數據庫裏有,就能把對應的加密前密碼返回給你,並非真正的解密。字符串

三、其餘的加密方式

本文的加密方式以md5方式加密舉例,還有其餘的加密方式,好比:.sha1()、.sha224()、.sha256()等,加密後的字符串長度更長,安全性更高。

 

3、加鹽

 原理:

若是要對password=123456加密,這個明文密碼太簡單,容易撞庫解密,因此在123456以後隨機加一個字符串,好比abc,這樣實際是對123456abc進行加密,若是不知道abc這個字符串,反解的可能性下降,安全性更高。這樣的一個字符串就叫作鹽。

salt = '545chjdsafl@*&'
password = input('password:')
password += salt  #加鹽,把salt和password組合到一塊兒

m = hashlib.md5(password.encode())
result = m.hexdigest()
print(result)

 

4、實際應用

#實現加密:傳入一個值,若是有鹽值,則加鹽加密;不然直接加密
def my_md5(s:str,salt=None):
    s=str(s)
    if salt:
        s=s+salt
    m=hashlib.md5(s.encode())
    return m.hexdigest()

 

 


任何付出都是值得的,會愈來愈好 

相關文章
相關標籤/搜索