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

Python的哈希hashlib模塊詳細(xì)解讀

 更新時(shí)間:2023年09月22日 09:53:17   作者:生有涯,知無(wú)涯  
這篇文章主要介紹了Python的哈希hashlib模塊詳細(xì)解讀,hashlib是一個(gè)提供字符加密功能的模塊,包含MD5和SHA的加密算法,具體支持md5,sha1, sha224, sha256, sha384, sha512等算法, 該模塊在用戶(hù)登錄認(rèn)證方面應(yīng)用廣泛,對(duì)文本加密也很常見(jiàn),需要的朋友可以參考下

1.hashlib模塊

hashlib是一個(gè)提供字符加密功能的模塊,包含MD5和SHA的加密算法,具體支持md5,sha1, sha224, sha256, sha384, sha512等算法。 該模塊在用戶(hù)登錄認(rèn)證方面應(yīng)用廣泛,對(duì)文本加密也很常見(jiàn)。

**哈希算法(Hash Algorithm):**簡(jiǎn)單的說(shuō)就是一種將任意長(zhǎng)度的消息壓縮到某一固定長(zhǎng)度的消息摘要的函數(shù);哈希算法是一種壓縮映射,也就是說(shuō)散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會(huì)散列成相同的輸出,所以不可能從散列值來(lái)確定唯一的輸入值

哈希的特點(diǎn):

1)只要輸入一樣,輸出的哈希必然一樣(用于文件、下載完整性校驗(yàn));

2)哈希算法不可逆,即使拿到哈希,也不能推出源文件;

3)只要使用的哈希算法不變,無(wú)論校驗(yàn)的內(nèi)容是否一樣,得到的哈希長(zhǎng)度是固定的.

加鹽

加鹽(salt)加密(簡(jiǎn)稱(chēng)“加鹽”)是一種對(duì)系統(tǒng)登錄口令的加密方式,它實(shí)現(xiàn)的方式是將每一個(gè)口令同一個(gè)叫做”鹽“(salt)的n位隨機(jī)數(shù)相關(guān)聯(lián)

無(wú)論何時(shí)只要口令改變,隨機(jī)數(shù)就改變;隨機(jī)數(shù)以未加密的方式存放在口令文件中,這樣每個(gè)人都可以讀;不再只保存加密過(guò)的口令,而是先將口令和隨機(jī)數(shù)連接起來(lái)然后一同加密,加密后的結(jié)果放在口令文件中

2.基本調(diào)用

import hashlib
new_md5 = hashlib.md5()  #創(chuàng)建hashlib的md5對(duì)象
new_md5.update('字符串')  #將字符串載入到md5對(duì)象中,獲得md5算法加密。
print(new_md5.hexdigest())  #通過(guò)hexdigest()方法,獲得new_md5對(duì)象的16進(jìn)制md5顯示。

簡(jiǎn)單來(lái)說(shuō)。就是三步:

1,建立加密對(duì)象。

2,對(duì)字符串進(jìn)行算法加密。

3,獲得16進(jìn)制顯示

可以創(chuàng)建的加密算法有:md5,sha1, sha224, sha256, sha384, sha512

例:

new_md5 = hashlib.md5()   
new_sha1 = hashlib.sha1()  
new_sha256 = hashlib.sha256()

簡(jiǎn)單調(diào)用:

new_md5 = hashlib.new('md5',b'字符串').hexdigest()
#或者
new_md5 = hashlib.md5(str(time.time().encode('utf-8')).hexdigest()

注意: 向?qū)ο笾袀魅胱址畷r(shí),必須為編碼類(lèi)型??梢允褂米址癰’ '的方法或使用.encode(‘UTF-8’)的方法,使字符串變?yōu)閎ytes類(lèi)型。

下面我們將引入一個(gè)簡(jiǎn)單的實(shí)力來(lái)說(shuō)明最常用的MD5算法在實(shí)際中的應(yīng)用。在引入實(shí)力前,讓我們先對(duì)MD5的基本特性有個(gè)認(rèn)識(shí)。

3.擴(kuò)展 md5算法的特點(diǎn)

  • 壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的MD5值的長(zhǎng)度都是固定的。
  • 容易計(jì)算:從原數(shù)據(jù)計(jì)算出的MD5值很容易。不管數(shù)據(jù)多大,很快就能算出一串MD5字符串來(lái)。
  • 抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕修改任何一個(gè)字節(jié),生成的MD5值也有會(huì)很大的區(qū)別。
  • 強(qiáng)抗碰撞:已知原數(shù)據(jù)和MD5,想找到一個(gè)具有相同MD5值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。

好啦,那我們已經(jīng)知道了MD5算法的特點(diǎn)。那么問(wèn)題來(lái)了,MD5既然每次生成的值都是固定的。那么雖然是單向生成不可反推,但是如果通過(guò)碰撞方法對(duì)字符串生成MD5后與MD5值碰撞,是不是就會(huì)得到MD5對(duì)應(yīng)的字符串了呢?答對(duì)了!這樣是可以的,換句話(huà)說(shuō),如果某用戶(hù)數(shù)據(jù)庫(kù)泄露了,拿到了密碼庫(kù)中的MD5就能通過(guò)碰撞的方法將密碼破解出來(lái)。那么問(wèn)題又來(lái)了,既然這樣,那也沒(méi)有什么用了啊。。非也,讓我們用一個(gè)小小的技巧,讓這個(gè)碰撞方法失效。這個(gè)方法就是“加鹽”,什么是加鹽呢?

“加鹽”就是對(duì)原密碼添加額外的字符串,然后再生成MD5值,這樣就沒(méi)有辦法進(jìn)行破解了,除非拿到“加鹽”字符串,但碰撞方法也是需要一個(gè)一個(gè)重新計(jì)算MD5值后再進(jìn)行碰撞對(duì)比的,難度也是極其大的。那么看下面的代碼吧:

例:MD5密碼認(rèn)證,帶“加鹽”方法

import hashlib
import os
salt = '!任#意%字^符@'  # 定義加鹽字符串
# salt = os.urandom(16).decode()  # 函數(shù)定位:返回一個(gè)有16個(gè)byte那么長(zhǎng)的一個(gè)string,然后很適合用于加密。
pwd = input('>>>')
md5_pwd = hashlib.md5()
md5_pwd.update((pwd+salt).encode('UTF-8'))  # 加鹽
pwd = md5_pwd.hexdigest()
#pwd = hashlib.new('md5',(pwd+salt).encode('UTF-8')).hexdigest()   # 也可以這樣簡(jiǎn)寫(xiě)哦。一句話(huà)搞定。

到此這篇關(guān)于Python的哈希hashlib模塊詳細(xì)解讀的文章就介紹到這了,更多相關(guān)Python的hashlib模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 繪制擬合曲線(xiàn)并加指定點(diǎn)標(biāo)識(shí)的實(shí)現(xiàn)

    python 繪制擬合曲線(xiàn)并加指定點(diǎn)標(biāo)識(shí)的實(shí)現(xiàn)

    這篇文章主要介紹了python 繪制擬合曲線(xiàn)并加指定點(diǎn)標(biāo)識(shí)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python打印9宮格、25宮格等奇數(shù)格 滿(mǎn)足橫豎斜相加和相等

    python打印9宮格、25宮格等奇數(shù)格 滿(mǎn)足橫豎斜相加和相等

    這篇文章主要為大家詳細(xì)介紹了python打印9宮格、25宮格等奇數(shù)格,滿(mǎn)足橫豎斜相加和相等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)

    Python中字符串轉(zhuǎn)換為列表的常用方法總結(jié)

    本文將詳細(xì)介紹Python中將字符串轉(zhuǎn)換為列表的八種常用方法,每種方法都具有其獨(dú)特的用途和適用場(chǎng)景,文中的示例代碼講解詳細(xì),感興趣的可以了解下
    2023-11-11
  • 10個(gè)殺手級(jí)應(yīng)用的Python自動(dòng)化腳本

    10個(gè)殺手級(jí)應(yīng)用的Python自動(dòng)化腳本

    重復(fù)的任務(wù)總是耗費(fèi)時(shí)間和枯燥的。如果逐一裁剪100張照片,或者做諸如Fetching APIs、糾正拼寫(xiě)和語(yǔ)法等任務(wù),所有這些都需要大量的時(shí)間。為什么不把它們自動(dòng)化呢?本文詳細(xì)介紹了10個(gè)Python自動(dòng)化腳本,感興趣的小伙伴可以閱讀一下
    2023-03-03
  • Python 語(yǔ)法錯(cuò)誤:"SyntaxError: invalid character in identifier"原因及解決方法

    Python 語(yǔ)法錯(cuò)誤:"SyntaxError: invalid charac

    本文給大家分享Python 語(yǔ)法錯(cuò)誤:“SyntaxError: invalid character in identifier“,原因及解決方法,文末給大家補(bǔ)充介紹了Python出現(xiàn)SyntaxError: invalid syntax的原因總結(jié),感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2023-02-02
  • Python爬蟲(chóng)設(shè)置代理IP的方法(爬蟲(chóng)技巧)

    Python爬蟲(chóng)設(shè)置代理IP的方法(爬蟲(chóng)技巧)

    這篇文章主要介紹了Python爬蟲(chóng)設(shè)置代理IP的方法(爬蟲(chóng)技巧),需要的朋友可以參考下
    2018-03-03
  • Python入門(mén)_淺談字符串的分片與索引、字符串的方法

    Python入門(mén)_淺談字符串的分片與索引、字符串的方法

    下面小編就為大家?guī)?lái)一篇Python入門(mén)_淺談字符串的分片與索引、字符串的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Python爬蟲(chóng)實(shí)現(xiàn)Cookie模擬登錄

    Python爬蟲(chóng)實(shí)現(xiàn)Cookie模擬登錄

    這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)Cookie模擬登錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Pycharm配置Qt Designer及Pyuic的實(shí)現(xiàn)方法

    Pycharm配置Qt Designer及Pyuic的實(shí)現(xiàn)方法

    本文介紹了如何安裝Qt designer和Pyuic以及他們的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver)

    tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver)

    這篇文章主要介紹了tensorflow1.0學(xué)習(xí)之模型的保存與恢復(fù)(Saver) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04

最新評(píng)論

伊金霍洛旗| 舟山市| 光山县| 松桃| 南皮县| 邛崃市| 镇沅| 西乌珠穆沁旗| 肇东市| 遂平县| 塔河县| 浮梁县| 苍梧县| 天门市| 临沧市| 吴桥县| 保亭| 互助| 水富县| 平舆县| 铁岭市| 苏尼特左旗| 大余县| 微博| 亚东县| 三原县| 醴陵市| 东阳市| 高邑县| 宜昌市| 宁化县| 洛浦县| 噶尔县| 额济纳旗| 迭部县| 梅河口市| 霍城县| 富锦市| 鱼台县| 琼中| 广宗县|