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

python模塊hashlib(加密服務(wù))知識(shí)點(diǎn)講解

 更新時(shí)間:2019年11月25日 14:29:57   作者:Mr-chen  
在本篇文章里小編給大家分享的是關(guān)于python模塊hashlib(加密服務(wù))知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。

官方文案:https://docs.python.org/zh-cn/3/library/hashlib.html

hashlib --- 安全哈希與消息摘要

Python的hashlib提供了常見的摘要算法,如MD5,SHA1等等。

什么是摘要digest algorithms算法呢?摘要算法又稱哈希hash算法、散列算法。它通過(guò)一個(gè)函數(shù),把任意長(zhǎng)度的數(shù)據(jù)轉(zhuǎn)換為一個(gè)長(zhǎng)度固定的數(shù)據(jù)串(通常用16進(jìn)制的字符串表示)。

hash算法

每種類型的hash都有一個(gè)構(gòu)建器方法,返回一個(gè)hash對(duì)象和相同的簡(jiǎn)單接口。

例如:

使用sha256()創(chuàng)建一個(gè)SHA-256hash object??梢允褂胾pdate()喂給它bytes-like object。然后可以用digest()或hexdigest()來(lái)獲得數(shù)據(jù)的摘要。

hashlib模型有許多算法如:sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), and blake2s()。還有很多其他算法要看Python使用的OpenSSL libary。具體見文檔。

使用algorithms_guaranteed常量,查看模塊在所有平臺(tái)都支持的算法:

>>> hashlib.algorithms_guaranteed
{'blake2s', 'sha256', 'sha3_512', 'sha1', 'shake_128', 'sha3_256', 'sha3_384', 'blake2b', 'sha3_224', 'sha512', 'md5', 'shake_256', 'sha224', 'sha384'}

使用algorithms_available常量,在編譯器運(yùn)行時(shí)可以的hash算法

>>> hashlib.algorithms_available
{'sha3_256', 'blake2b', 'md5', 'sha512_224', 'sha384', 'md4', 'sha256', 'sha512', 'whirlpool', 'sha224', 'sha512_256', 'shake_128', 'sha3_384', 'ripemd160', 'blake2s', 'sha3_512', 'sha1', 'sm3', 'shake_256', 'sha3_224', 'md5-sha1'}

例子:

>>> import hashlib
>>> m = hashlib.sha256()
>>> m.update(b" the spammish repetition")  #重復(fù)調(diào)用相當(dāng)于,把bytes字節(jié)串相加。
>>> m.name  #hash算法的名字
'sha256'
>>> m.digest() #返回傳入update()的數(shù)據(jù)的摘要
b'U<\x9bP\xb1\xa8\x9a\x9aE\x0f;h\xdb\x04\x11\xc1\x08\xfaH\xa7\t\xbfF\x91\x01\x13\xa1\x87\xb6\xd9`\x96'
>>> m.digest_size  #摘要的大小
>>> m.block_size  #hash算法內(nèi)的塊的大小
>>> m.hexdigest()  #返回一個(gè)字符串對(duì)象,一般用在安全的email或其他非binary環(huán)境
'553c9b50b1a89a9a450f3b68db0411c108fa48a709bf46910113a187b6d96096'
>>>

不同的算法安全不一樣,sha256就比sha1安全,但越安全的算法不僅越慢,摘要長(zhǎng)度更長(zhǎng)。

摘要算法應(yīng)用

保存用戶輸入的密碼:正確的保存口令的方式是不存儲(chǔ)用戶的明文口令,而是存儲(chǔ)用戶口令的摘要,比如MD5.

摘要算法在很多地方都有廣泛的應(yīng)用。要注意摘要算法不是加密算法,不能用于加密(因?yàn)闊o(wú)法通過(guò)摘要反推明文),只能用于防篡改,但是它的單向計(jì)算特性決定了可以在不存儲(chǔ)明文口令的情況下驗(yàn)證用戶口令。

例子:

存儲(chǔ)MD5的好處是即使運(yùn)維人員能訪問數(shù)據(jù)庫(kù),也無(wú)法獲知用戶的明文口令。

設(shè)計(jì)一個(gè)驗(yàn)證用戶登錄的函數(shù),根據(jù)用戶輸入的口令是否正確,返回True或False:

# -*- coding: utf-8 -*-
db = {
  'michael': 'e10adc3949ba59abbe56e057f20f883e',
  'bob': '878ef96e86145580c38c87f0410ad153',
  'alice': '99b1c2188db85afee403b1536010c2c9'
}

import hashlib

def calc_md5(password):
  m = hashlib.md5()
  m.update(password.encode('utf-8'))
  return m.hexdigest()

def login(user, password):
  return db[user] == calc_md5(password)
    

# 測(cè)試:
assert login('michael', '123456')
assert login('bob', 'abc999')
assert login('alice', 'alice2008')
assert not login('michael', '1234567')
assert not login('bob', '123456')
assert not login('alice', 'Alice2008')
print('ok')

希望腳本之家整理的相關(guān)知識(shí)點(diǎn)能夠幫助到大家,感謝你們的支持。

相關(guān)文章

  • numpy.random.seed()的使用實(shí)例解析

    numpy.random.seed()的使用實(shí)例解析

    這篇文章主要介紹了numpy.random.seed()的使用實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Tornado源碼分析之HTTP服務(wù)請(qǐng)求解析

    Tornado源碼分析之HTTP服務(wù)請(qǐng)求解析

    這篇文章主要為大家介紹了Tornado源碼分析之HTTP服務(wù)請(qǐng)求解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 詳解利用python-highcharts庫(kù)繪制交互式可視化圖表

    詳解利用python-highcharts庫(kù)繪制交互式可視化圖表

    本文主要和大家分享一個(gè)超強(qiáng)交互式可視化繪制工具-python-highcharts。python-highcharts就是使用Python進(jìn)行Highcharts項(xiàng)目繪制,簡(jiǎn)單的說(shuō)就是實(shí)現(xiàn)Python和Javascript之間的簡(jiǎn)單轉(zhuǎn)換層,感興趣的可以了解一下
    2022-03-03
  • Python中正則表達(dá)式的用法實(shí)例匯總

    Python中正則表達(dá)式的用法實(shí)例匯總

    這篇文章主要介紹了Python中正則表達(dá)式的用法實(shí)例匯總,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • 簡(jiǎn)單了解python PEP的一些知識(shí)

    簡(jiǎn)單了解python PEP的一些知識(shí)

    這篇文章主要介紹了簡(jiǎn)單了解python PEP的一些知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python爬蟲開發(fā)之urllib模塊詳細(xì)使用方法與實(shí)例全解

    python爬蟲開發(fā)之urllib模塊詳細(xì)使用方法與實(shí)例全解

    這篇文章主要介紹了python爬蟲開發(fā)之urllib模塊詳細(xì)使用方法與實(shí)例全解,需要的朋友可以參考下
    2020-03-03
  • python實(shí)現(xiàn)ip查詢示例

    python實(shí)現(xiàn)ip查詢示例

    這篇文章主要介紹了python實(shí)現(xiàn)ip查詢示例,需要的朋友可以參考下
    2014-03-03
  • Python中的分支與循環(huán)結(jié)構(gòu)解讀

    Python中的分支與循環(huán)結(jié)構(gòu)解讀

    這篇文章主要介紹了Python中的分支與循環(huán)結(jié)構(gòu)解讀,在Python編程中,分支(Branch)和循環(huán)(Loop)是掌握的關(guān)鍵要素之一,它們?cè)试S您根據(jù)條件執(zhí)行不同的代碼塊,以及重復(fù)執(zhí)行特定任務(wù),需要的朋友可以參考下
    2023-10-10
  • python?chinesecalendar報(bào)錯(cuò):"no?available?data?for?year?{},?only?year?between?[{},?{}]?supported"

    python?chinesecalendar報(bào)錯(cuò):"no?available?data?for?ye

    這篇文章主要介紹了python?chinesecalendar報(bào)錯(cuò):“no?available?data?for?year?{},?only?year?between?[{},?{}]?supported“的相關(guān)知識(shí),需要的朋友可以參考下
    2023-03-03
  • python貪吃蛇游戲代碼

    python貪吃蛇游戲代碼

    這篇文章主要為大家詳細(xì)介紹了python貪吃蛇游戲代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論

宜城市| 古浪县| 喜德县| 陇南市| 罗定市| 扎兰屯市| 建水县| 鹿邑县| 犍为县| 岫岩| 通化县| 武鸣县| 威远县| 合川市| 新蔡县| 大洼县| 林西县| 宣城市| 建平县| 密云县| 察哈| 易门县| 娄底市| 资溪县| 佳木斯市| 兰溪市| 安仁县| 永和县| 鄂伦春自治旗| 南部县| 兴安县| 大安市| 桃源县| 沂水县| 伊金霍洛旗| 顺平县| 靖远县| 磐安县| 荥经县| 中卫市| 博罗县|