一、字符串先轉成二進制類型數據庫
使用.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())
一、檢驗加密結果blog
print(len(m.hexdigest()))
二、md5加密以後是不可逆的md5
若是輸入的加密後密碼碰巧數據庫裏有,就能把對應的加密前密碼返回給你,並非真正的解密。字符串
三、其餘的加密方式
本文的加密方式以md5方式加密舉例,還有其餘的加密方式,好比:.sha1()、.sha224()、.sha256()等,加密後的字符串長度更長,安全性更高。
原理:
若是要對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)
#實現加密:傳入一個值,若是有鹽值,則加鹽加密;不然直接加密 def my_md5(s:str,salt=None): s=str(s) if salt: s=s+salt m=hashlib.md5(s.encode()) return m.hexdigest()
任何付出都是值得的,會愈來愈好