在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ hmac
基礎(chǔ)
itertools
HTTP 服務(wù)
hashlib
閉包
文件和目錄
單元測(cè)試
使用 @property
標(biāo)準(zhǔn)模塊
陌生的 metaclass
Base64
進(jìn)程、線程和協(xié)程
讀寫(xiě)二進(jìn)制文件
匿名函數(shù)
輸入和輸出
Click
元組
字符編碼
partial 函數(shù)
參考資料
collections
協(xié)程
類和實(shí)例
Python 之旅
定制類和魔法方法
常用數(shù)據(jù)類型
繼承和多態(tài)
ThreadLocal
HTTP 協(xié)議簡(jiǎn)介
Requests 庫(kù)的使用
讀寫(xiě)文本文件
列表
os 模塊
迭代器 (Iterator)
正則表達(dá)式
集合
上下文管理器
異常處理
你不知道的 super
定義函數(shù)
datetime
資源推薦
字典
slots 魔法
hmac
第三方模塊
進(jìn)程
類方法和靜態(tài)方法
函數(shù)參數(shù)
高階函數(shù)
函數(shù)
re 模塊
高級(jí)特性
線程
argparse
生成器
結(jié)束語(yǔ)
字符串
map/reduce/filter
函數(shù)式編程
Celery
裝飾器

hmac

HMAC 是用于消息認(rèn)證的加密哈希算法,全稱是 keyed-Hash Message Authentication Code。HMAC 利用哈希算法,以一個(gè)密鑰和一個(gè)消息作為輸入,生成一個(gè)加密串作為輸出。HMAC 可以有效防止類似 MD5 的彩虹表等攻擊,比如將常見(jiàn)密碼的 MD5 值存入數(shù)據(jù)庫(kù),可能被反向破解。

Python 的 hmac 模塊提供了 HMAC 算法,它的使用形式是:

hmac.new(key[, msg[, digestmod]])

其中,key 是一個(gè)密鑰;msg 是消息,可選,如果給出 msg,則調(diào)用方法 update(msg);digestmod 是 HMAC 對(duì)象使用的摘要構(gòu)造函數(shù)或模塊,默認(rèn)為 hashlib.md5 構(gòu)造函數(shù)。

HMAC 對(duì)象常用的方法有:

  • HMAC.update(msg)

用字符串 msg 更新 HMAC 對(duì)象,重復(fù)的調(diào)用等同于一次調(diào)用所有參數(shù)的組合,即:

m.update(a);
m.update(b);

相當(dāng)于

m.update(a+b)
  • HMAC.digest()

返回目前傳遞給 update() 方法的字符串的摘要。此字符串長(zhǎng)度將與給構(gòu)造函數(shù)的摘要的 digest_size 相同。它可能包含非 ASCII 字符,包括 NULL 字節(jié)。

  • HMAC.hexdigest()

類似 digest(),但是返回的摘要的字符串的長(zhǎng)度翻倍,且只包含十六進(jìn)制數(shù)字。

現(xiàn)在,讓我們看一個(gè)簡(jiǎn)單的例子:

>>> from datetime import datetime
>>> import hashlib
>>> import hmac

>>> key = 'you-never-know'
>>> msg = datetime.utcnow().strftime('%Y-%m-%d')

>>> m = hmac.new(key, msg, hashlib.sha1)
>>> signature = m.hexdigest()
>>> signature
'fdb2087a66a2f00afbc1884738467ba089782779'

參考資料