用python的雜湊函式對密碼加密

2022-10-08 15:51:13 字數 3342 閱讀 3788

今天我將教大家如何用雜湊函式將密碼加密

加密後的密碼是很難倒推的~

普通加密:

首先呼叫函式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...