14.2。 hmac —メッセージ認証のためのキー付きハッシュ
バージョン2.2の新機能。
ソースコード: :source: `Lib / hmac.py`
このモジュールは、 RFC 2104 で説明されているHMACアルゴリズムを実装します。
- hmac.new(key[, msg[, digestmod]])
- 新しいhmacオブジェクトを返します。 msg が存在する場合、メソッド呼び出し
update(msg)
が行われます。 digestmod は、HMACオブジェクトが使用するダイジェストコンストラクターまたはモジュールです。 デフォルトはhashlib.md5
コンストラクターです。
HMACオブジェクトには次のメソッドがあります。
- HMAC.update(msg)
- 文字列 msg でhmacオブジェクトを更新します。 繰り返される呼び出しは、すべての引数を連結した単一の呼び出しと同等です。
m.update(a); m.update(b)
はm.update(a + b)
と同等です。
- HMAC.digest()
これまでに update()メソッドに渡された文字列のダイジェストを返します。 この文字列は、コンストラクターに与えられたダイジェストの digest_size と同じ長さになります。 NULバイトを含む非ASCII文字が含まれる場合があります。
警告
検証ルーチン中に digest()の出力を外部提供のダイジェストと比較する場合は、
==
の代わりに compare_digest()関数を使用することをお勧めします。タイミング攻撃に対する脆弱性を減らすためのオペレーター。
- HMAC.hexdigest()
digest()と同様ですが、ダイジェストが16進数のみを含む長さの2倍の文字列として返される点が異なります。 これは、電子メールまたはその他の非バイナリ環境で値を安全に交換するために使用できます。
警告
検証ルーチン中に hexdigest()の出力を外部提供のダイジェストと比較する場合は、
==
の代わりに compare_digest()関数を使用することをお勧めします。タイミング攻撃に対する脆弱性を減らすためのオペレーター。
- HMAC.copy()
- hmacオブジェクトのコピー(「クローン」)を返します。 これを使用して、共通の初期サブ文字列を共有する文字列のダイジェストを効率的に計算できます。
このモジュールは、次のヘルパー関数も提供します。
- hmac.compare_digest(a, b)
a == b
を返します。 この関数は、コンテンツベースの短絡動作を回避することでタイミング分析を防止するように設計されたアプローチを使用しており、暗号化に適しています。 a と b は両方とも同じタイプである必要があります: unicode またはバイトのようなオブジェクト。ノート
a と b の長さが異なる場合、またはエラーが発生した場合、タイミング攻撃により、理論的には a とのタイプと長さに関する情報が明らかになる可能性があります。 ] b -ただし、それらの値ではありません。
バージョン2.7.7の新機能。