最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用python的哈希函數(shù)對(duì)密碼加密

 更新時(shí)間:2022年02月07日 08:36:13   作者:沃特陌  
大家好,本篇文章主要講的是用python的哈希函數(shù)對(duì)密碼加密,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下

今天我將教大家如何用哈希函數(shù)將密碼加密
加密后的密碼是很難倒推的~

普通加密:

首先調(diào)用函數(shù)hashlib

import hashlib

然后使用哈希函數(shù)對(duì)密碼進(jìn)行加密
這里我使用sha256進(jìn)行加密

再造一個(gè)密碼出來(lái)

password = 'wotemo666'

接著用哈希函數(shù)對(duì)它進(jìn)行加密

注意:這里要使用encode對(duì)password進(jìn)行編碼格式聲明,不然會(huì)報(bào)錯(cuò)

未聲明編碼格式報(bào)錯(cuò)

hash_password = hashlib.sha256(password.encode("utf-8")).hexdigest()
print(hash_password)

運(yùn)行這行代碼輸出的就是加密后的哈希值啦?。?!

哈希值輸出

圖中這行字符串就是 ‘wotemo666’ 對(duì)應(yīng)的哈希值

每個(gè)明文對(duì)應(yīng)一個(gè)哈希值,但一個(gè)哈希值卻對(duì)應(yīng)無(wú)數(shù)個(gè)明文
這就導(dǎo)致哈希值是不可逆的,這樣,你的密碼就更加安全啦~

下面是完整的代碼

# 首先調(diào)用函數(shù)hashlib
import hashlib
# 再造一個(gè)密碼出來(lái)
password = 'wotemo666'
# 用sha256對(duì)password進(jìn)行加密
hash_password = hashlib.sha256(password.encode("utf-8")).hexdigest()
# 輸出對(duì)應(yīng)的哈希值
print(hash_password)

進(jìn)階加密:

如果想讓你的密碼更加的安全,那就要給你的密碼加點(diǎn)鹽

這里的加鹽就是指在明文密碼前或后插入一段隨機(jī)字符串,然后再進(jìn)行哈希加密

這樣得出來(lái)的哈希值就更加的復(fù)雜,就更不容易被破解啦

下面我們來(lái)實(shí)現(xiàn)吧

首先調(diào)用random函數(shù)隨機(jī)生成“鹽”

import random

這里我們要用到python中的string模塊生成a ~ Z和0 ~ 9的所有字符

調(diào)用string模塊

import string

String模塊中的常量:

string.digits:數(shù)字0~9

string.ascii_letters:所有字母(大小寫)

string.lowercase:所有小寫字母

string.printable:可打印字符的字符串

string.punctuation:所有標(biāo)點(diǎn)

string.uppercase:所有大寫字母

這里我們只需用到前兩個(gè)digits和ascii_letters就可以了

ps:如果想密碼更復(fù)雜一些可以使用punctuation生成所有標(biāo)點(diǎn),然后一同加入到鹽中去

這里我們使用while和random函數(shù)隨機(jī)生成可以控制長(zhǎng)度的鹽

先創(chuàng)建一個(gè)激活while的變量和一個(gè)儲(chǔ)存鹽的空白字符串

active = 0
salts = ''

接著用while生成鹽

 while active < 10:
        # 用active激活while
        # 這里生成了一個(gè)長(zhǎng)度為20的鹽
        # 想要生成多長(zhǎng)的鹽,就將示例中的10改為期望長(zhǎng)度的一半
        # 但這里的值最好是整數(shù)
        salt_one = random.choice(string.digits)
        # salt_one生成一個(gè)隨機(jī)的數(shù)字
        salt_two = random.choice(string.ascii_letters)
        # salt_two生成一個(gè)隨機(jī)的字母(區(qū)分大小寫)
        salt = salt_one + salt_two
        #salt是它們的加和,這也就是為什么前面要減半
        salts += salt
        # 然后將加和后的值附加到剛才創(chuàng)建的空白字符串中
        active += 1
        # while函數(shù)基本用法我就不多說(shuō)了

這樣鹽就生成出來(lái)啦,如圖:

生成鹽的值

接下來(lái),我們將鹽附加到明文密碼上

after_salt_password = salts + password
# 鹽的前后順序無(wú)所謂,password為你的密碼

然后,我們?cè)僬{(diào)用hashlib生成哈希值

這里的操作就和前面的一模一樣了,唯一不同的是密碼加鹽了

# 首先調(diào)用函數(shù)hashlib
import hashlib
# 再造一個(gè)密碼出來(lái)
password = 'wotemo666'
# 然后加鹽
after_salt_password = salts + password
# 用sha256對(duì)password進(jìn)行加密
hash_password = hashlib.sha256(after_salt_password.encode("utf-8")).hexdigest()

加鹽后的哈希值就更為復(fù)雜了

加鹽后的哈希值

下面是完整的代碼

# 調(diào)用random, string, hashlib函數(shù)
import random
import string
import hashlib

# 初始化
active = 0
salts = ''

while active < 10:
        # 用active激活while
        # 這里生成了一個(gè)長(zhǎng)度為20的鹽
        # 想要生成多長(zhǎng)的鹽,就將示例中的10改為期望長(zhǎng)度的一半
        # 但這里的值最好是整數(shù)
        salt_one = random.choice(string.digits)
        # salt_one生成一個(gè)隨機(jī)的數(shù)字
        salt_two = random.choice(string.ascii_letters)
        # salt_two生成一個(gè)隨機(jī)的字母(區(qū)分大小寫)
        salt = salt_one + salt_two
        #salt是它們的加和,這也就是為什么前面要減半
        salts += salt
        # 然后將加和后的值附加到剛才創(chuàng)建的空白字符串中
        active += 1
        # while函數(shù)基本用法我就不多說(shuō)了

password = 'wotemo666'
# 然后加鹽
after_salt_password = salts + password
# 用sha256對(duì)password進(jìn)行加密
hash_password = hashlib.sha256(after_salt_password.encode("utf-8")).hexdigest()
# hash_password就是輸出的哈希值
print(hash_password)

你學(xué)會(huì)了嗎?

到此這篇關(guān)于用python的哈希函數(shù)對(duì)密碼加密的文章就介紹到這了,更多相關(guān)python哈希函數(shù)加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

辽宁省| 贵阳市| 周至县| 鄂托克旗| 石渠县| 承德市| 玉环县| 合肥市| 方山县| 堆龙德庆县| 寿宁县| 罗江县| 神木县| 荃湾区| 西丰县| 南充市| 辛集市| 井冈山市| 台东县| 丹棱县| 咸宁市| 茌平县| 麻阳| 新民市| 定远县| 宝山区| 来凤县| 安远县| 靖州| 泊头市| 海晏县| 孙吴县| 大田县| 安岳县| 郑州市| 磐石市| 米林县| 郯城县| 上饶市| 吉隆县| 吴江市|