Python之加密模塊


hashlib模塊

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

一、加密步驟

1、字符串先轉成二進制類型

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

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

2、使用加密方法

使用.hexdigest()方法輸出加密后內容

import hashlib
password='123456'
m=hashlib.md5(password.encode()) #先轉成二進制,再加密
#print(dir(m)) #由於這個加密模塊pycharm提供不了提示方法,所以如果想知道都有什么方法,可以使用內置函數dir(),使用這條語句就能打印出所有方法了
print(m.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()
    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM