真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

hashlib模塊怎么在python中使用-創(chuàng)新互聯(lián)

hashlib模塊怎么在python中使用?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

吉木乃網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),吉木乃網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為吉木乃上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個(gè)售后服務(wù)好的吉木乃做網(wǎng)站的公司定做!

hash算法

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

例如:

使用sha256()創(chuàng)建一個(gè)SHA-256hash object。可以使用update()喂給它bytes-like object。然后可以用digest()或hexdigest()來獲得數(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è)字符串對象,一般用在安全的email或其他非binary環(huán)境
'553c9b50b1a89a9a450f3b68db0411c108fa48a709bf46910113a187b6d96096'
>>>

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

摘要算法應(yīng)用

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

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

例子:

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

設(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)
    

# 測試:
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')

看完上述內(nèi)容,你們掌握hashlib模塊怎么在python中使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)站欄目:hashlib模塊怎么在python中使用-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/dsciss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部