新聞中心
hmac —- 基于密鑰的消息驗(yàn)證
源代碼: Lib/hmac.py

創(chuàng)新互聯(lián)專注于象山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開(kāi)發(fā)。象山網(wǎng)站建設(shè)公司,為象山等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
此模塊實(shí)現(xiàn)了 HMAC 算法,算法的描述參見(jiàn) RFC 2104。
hmac.new(key, msg=None, digestmod=’’)
返回一個(gè)新的 hmac 對(duì)象。 key 是一個(gè)指定密鑰的 bytes 或 bytearray 對(duì)象。 如果提供了 msg,將會(huì)調(diào)用 update(msg) 方法。 digestmod 為 HMAC 對(duì)象所用的摘要名稱、摘要構(gòu)造器或模塊。 它可以是適用于 hashlib.new() 的任何名稱。 雖然該參數(shù)位置靠后,但它卻是必須的。
在 3.4 版更改: 形參 key 可以為 bytes 或 bytearray 對(duì)象。 形參 msg 可以為 hashlib 所支持的任意類型。 形參 digestmod 可以為某種哈希算法的名稱。
從版本 3.4 起棄用,在版本 3.8 中移除。: MD5 作為 digestmod 的隱式默認(rèn)摘要已被棄用。 digestmod 形參現(xiàn)在是必須的。 請(qǐng)將其作為關(guān)鍵字參數(shù)傳入以避免當(dāng)你沒(méi)有初始 msg 時(shí)將導(dǎo)致的麻煩。
hmac.digest(key, msg, digest)
基于給定密鑰 key 和 digest 返回 msg 的摘要。 此函數(shù)等價(jià)于 HMAC(key, msg, digest).digest(),但使用了優(yōu)化的 C 或內(nèi)聯(lián)實(shí)現(xiàn),對(duì)放入內(nèi)存的消息能處理得更快。 形參 key, msg 和 digest 具有與 new() 中相同的含義。
作為 Cpython 的實(shí)現(xiàn)細(xì)節(jié),優(yōu)化的 C 實(shí)現(xiàn)僅當(dāng) digest 為字符串并且是一個(gè) OpenSSL 所支持的摘要算法的名稱時(shí)才會(huì)被使用。
3.7 新版功能.
HMAC 對(duì)象具有下列方法:
HMAC.update(msg)
用 msg 來(lái)更新 hmac 對(duì)象。 重復(fù)調(diào)用相當(dāng)于單次調(diào)用并傳入所有參數(shù)的拼接結(jié)果: m.update(a); m.update(b) 等價(jià)于 m.update(a + b)。
在 3.4 版更改: 形參 msg 可以為 hashlib 所支持的任何類型。
HMAC.digest()
返回當(dāng)前已傳給 update() 方法的字節(jié)串?dāng)?shù)據(jù)的摘要。 這個(gè)字節(jié)串?dāng)?shù)據(jù)的長(zhǎng)度將與傳給構(gòu)造器的摘要的長(zhǎng)度 digest_size 相同。 它可以包含非 ASCII 的字節(jié),包括 NUL 字節(jié)。
警告
When comparing the output of digest() to an externally supplied digest during a verification routine, it is recommended to use the compare_digest() function instead of the == operator to reduce the vulnerability to timing attacks.
HMAC.hexdigest()
類似于 digest() 但摘要會(huì)以兩倍長(zhǎng)度字符串的形式返回,其中僅包含十六進(jìn)制數(shù)碼。 這可以被用于在電子郵件或其他非二進(jìn)制環(huán)境中安全地交換數(shù)據(jù)值。
警告
When comparing the output of hexdigest() to an externally supplied digest during a verification routine, it is recommended to use the compare_digest() function instead of the == operator to reduce the vulnerability to timing attacks.
HMAC.copy()
返回 hmac 對(duì)象的副本(“克?。?這可被用來(lái)高效地計(jì)算共享相同初始子串的數(shù)據(jù)的摘要。
hash 對(duì)象具有以下屬性:
HMAC.digest_size
以字節(jié)表示的結(jié)果 HMAC 摘要的大小。
HMAC.block_size
以字節(jié)表示的哈希算法的內(nèi)部塊大小。
3.4 新版功能.
HMAC.name
HMAC 的規(guī)范名稱,總是為小寫(xiě)形式,例如 hmac-md5。
3.4 新版功能.
3.9 版后已移除: 未寫(xiě)入文檔的屬性 HMAC.digest_cons, HMAC.inner 和 HMAC.outer 屬于內(nèi)部實(shí)現(xiàn)細(xì)節(jié),將在 Python 3.10 中被移除。
這個(gè)模塊還提供了下列輔助函數(shù):
hmac.compare_digest(a, b)
返回 a == b。 此函數(shù)使用一種經(jīng)專門(mén)設(shè)計(jì)的方式通過(guò)避免基于內(nèi)容的短路行為來(lái)防止定時(shí)分析,使得它適合處理密碼。 a 和 b 必須為相同的類型:或者是 str (僅限 ASCII 字符,如 HMAC.hexdigest() 的返回值),或者是 bytes-like object。
備注
如果 a 和 b 具有不同的長(zhǎng)度,或者如果發(fā)生了錯(cuò)誤,定時(shí)攻擊在理論上可以獲取有關(guān) a 和 b 的類型和長(zhǎng)度信息 — 但不能獲取它們的值。
3.3 新版功能.
在 3.10 版更改: 此函數(shù)在可能的情況下會(huì)在內(nèi)部使用 OpenSSL 的 CRYPTO_memcmp()。
參見(jiàn)
模塊 hashlib
提供安全哈希函數(shù)的 Python 模塊。
分享題目:創(chuàng)新互聯(lián)Python教程:hmac —- 基于密鑰的消息驗(yàn)證
文章源于:http://www.dlmjj.cn/article/dpgspji.html


咨詢
建站咨詢
