今天我將教大家如何用雜湊函式將密碼加密
加密後的密碼是很難倒推的~
普通加密:
首先呼叫函式hfiuhetpashlib
import hashlib
然後使用雜湊函式對密碼進行加密
這裡我使用sha256進行加密
再造乙個密碼出來
password = 'wotemo666'
接著用雜湊函式對它進行加密
注意:這裡要使用encode對password進行編碼格www.cppcns.com式宣告,不然會報錯
hash_password = hashlib.sha256(password.encode("utf-8")).hexdigest()
print(hash_password)
執行這行**輸出的就是加密後的雜湊值啦!!!
圖中這行字串就是 『wotemo666』 對應的雜湊值
每個明文對應乙個雜湊值,但乙個雜湊值卻對應無數個明文
這就導致雜湊值是不可逆的,這樣,你的密碼就更加安全啦~
下面是完整的**
# 首先呼叫函式hashlib
import hashlib
# 再造乙個密碼出來
password = 'wotemo666'
# 用sha256對password進行加密
hash_password = 程式設計客棧hashlib.sha256(password.encode("utf-8")).hexdigest()
# 輸出對應的雜湊值
print(hash_password)
高階加密:
如果想讓你的密碼更加的安全,那就要給你的密碼加點鹽了
這裡的加鹽就是指在明文密碼前或後插入一段隨機字串,然後再進行雜湊加密
這樣得出來的雜湊值就更加的複雜,就更不容易被破解啦
下面我們來實現吧
首先呼叫random函式隨機生成「鹽」
import random
這裡我們要用到python中的string模組生成a ~ z和0 ~ 9的所有字元
呼叫string模組
import string
string模組中的常量:
string.digits:數字0~9
string.ascii_letters:所有字母(大小寫)
string.lowercase:所有小寫字母
string.printable:可列印字元的字串
string.punctuation:所有標點
string.uppercase:所有大寫字母
這裡我們只需用到前兩個digits和ascii_letters就可以了
ps:如果想密碼更複雜一些可以使用punctuation生成所有標點,然後一同加入到鹽中去
這裡我們使用while和random函式隨機生成可以控制長度的鹽
先建立乙個啟用while的變數和乙個儲存鹽的空白字串
active = 0
salts = ''
接著用while生成鹽
while active < 10:
# 用active啟用while
# 這裡生成了乙個長度為20的鹽
# 想要生成多長的鹽,就將示例中的10改為期望長度的一半
# 但這裡的值最好是整數
salt_one = random.choice(string.digits)
# salt_one生成乙個隨機的數字
salt_two = random.choice(string.ascii_letters)
# salt_two生成乙個隨機的字母(區分大小寫)
salt = salt_one + salt_two
#salt是它們的加和,這也就是為什麼前面要減半
salts += salt
# 然後將加和後的值附加到剛才建立的空白字串中
active += 1
# while函式基本用法我就不多說了
這樣鹽就生成出來啦,如圖:
接下來,我們將鹽附加到明文密碼上
after_salt_password = salts + password
# 鹽的前後順序無所謂,password為你的密碼
然後,我們再呼叫hashlib生成雜湊值
這裡的操作就和前面的一模一樣了,唯一不同的是密碼加鹽了
# 首先呼叫函式hash程式設計客棧lib
import hashlib
# 再造乙個密碼出來
password = 'wotemo666'
# 然後加鹽
after_salt_password = salts + password
# 用sha256對password進行加密
hash_password = hashlib.sha256(after_salt_password.encode("utf-8")).hexdigest()
加鹽後的雜湊值就更為複雜了
下面是完整的**
# 呼叫random, string, hashlib函式
import random
import string
import hashlib
# 初始化
active = 0
salts = ''
while active < 10:
# 用active啟用while
# 這裡生成了乙個長度為20的鹽
# 想要生成多長的鹽,就將示例中的10改為期望長度的一半
# 但這裡的值最好是整數
salt_one = random.choice(string.digits)
# salt_one生成乙個隨機的數字
salt_two = random.choice(string.ascii_letters)
# salt_two生成乙個隨機的字母(區分大小寫)
salt = salt_one + salt_two
#salt是它們的加和,這也就是為什麼前面要減半
salts += salt
# 然後將加和後的值附加到剛才建立的空白字串中
active += 1
# while函式基本用法我就不多說了
password = 'wotemo666'
# 然後加鹽
after_salt_password = salts + password
# 用sha256對password進行加密
hash_password = hashlib.sha256(after_salt_password.encode("utf-8")).hexdigest()
# hash_password就是輸出的雜湊值
print(hash_password)
你學會了嗎?
雜湊函式密碼學
鏈客,有問必答!雜湊函式是密碼學中的乙個重要分支,該函式是一類數學函式,它可以在有限的合理時間內,將任意長度的訊息變換成固定長度的二進位制串,且不可逆,這個輸出值就是雜湊值,也叫雜湊值或訊息摘要。以hash函式為基礎的hash演算法,在數字簽名,實現資料完整性,merkle樹資料儲存和檢索等方面有著...
雜湊函式密碼學
鏈客,有問必答!雜湊函式是密碼學中的乙個重要分支,該函式是一類數學函式,它可以在有限的合理時間內,將任意長度的訊息變換成固定長度的二進位制串,且不可逆,這個輸出值就是雜湊值,也叫雜湊值或訊息摘要。以hash函式為基礎的hash演算法,在數字簽名,實現資料完整性,merkle樹資料儲存和檢索等方面有著...
詳解對密碼執行雜湊和 salt 運算方法
大家對密碼執行雜湊和salt運算一定不陌生。兩個visual studio企業版示例都是用的這個方法來加密這個方法的。結合示例 我總結了乙個包含對密碼進行加密,比較等靜態方法的類。使用說明 先用hashandsalt方法對密碼進行加密,然後儲存到資料庫中。在使用者登入時用 parepasswords...