Pythonでのメッセージ認証のためのキー付きハッシュ
Pythonの暗号化ハッシュ関数を使用したメッセージ認証は、HMACメカニズムを介して実現できます。 HMACは、MD5、SHA-1などの複数の反復可能なハッシュ関数と秘密の共有キーを組み合わせて使用できます。
基本的な考え方は、共有秘密鍵と組み合わせた実際のデータの暗号化ハッシュを生成することにより、データを保護することです。最終結果は秘密鍵なしで送信されますが、結果のハッシュを使用して、送信または保存されたメッセージを確認できます。
構文
hmac.new(key, msg = None, digestmod = None)
生成された新しいhmacオブジェクトを返します。
ここで-
-
キー–ここで共有秘密キー。
-
メッセージ–ここでハッシュするメッセージここでハッシュするメッセージ
-
Digestmod –使用するHMACオブジェクトのダイジェスト名またはモジュール
HMACモジュールのメソッドと属性-
-
hmac.update(メッセージ)
指定されたメッセージを使用してhmacオブジェクトを更新するために使用されます。このメソッドを複数回呼び出すと、メッセージが追加されます。
-
hmac.digest()
これまでにupdate()メソッドに渡されたバイトのダイジェストを返します。
-
hashlib.hexdigest()
ダイジェストが16進数のみを含む長さの2倍の文字列として返されることを除いて、digest()と同様です。これは、電子メールまたはその他の非バイナリ環境で安全に値を交換するために使用できます。
-
haslib.copy()
hmacオブジェクトのコピー(「クローン」)を返します。
例1
デフォルトのMD5ハッシュアルゴリズムを使用してハッシュを作成します。
#Import libraries import hashlib import hmac #data update_bytes = b'Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ Suspendisse tristique condimentum viverra. Nulla accumsan \ orci risus, non congue lacus feugiat id.' #secret key password = b'402xy5#' #Generate cryptographic hash using md5 my_hmac = hmac.new(update_bytes, password, hashlib.md5) print("The first digest: " + str(my_hmac.digest())) print("The Canonical Name: " + my_hmac.name) print("Block size: " + str (my_hmac.block_size) + "bytes") print("Digest size: " + str(my_hmac.digest_size) + "bytes") #Create a copy of the hmac object my_hmac_cpy = my_hmac.copy() print("The Copied digest: " + str(my_hmac_cpy.digest()))
出力
The first digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8' The Canonical Name: hmac-md5 Block size: 64bytes Digest size: 16bytes The Copied digest: b'H\xcc.nf\xdd\x8bC\x8di\x0cC\xb8\xe9l\xa8'
SHA1はMD5アルゴリズムよりも安全であると考えられているため、SHA1アルゴリズムを使用して上記のプログラムを実行することを検討している場合。この行のアルゴリズム名を変更するだけです
my_hmac =hmac.new(update_bytes、password、hashlib.sha1)
結果は次のようになります:
最初のダイジェスト:b'\ xc3T \ xe7 [\ xc8 \ xa3O / $ \ xbd`A \ xad \ x07d \ xe8 \ xae \ xa2!\ xb4'
The Canonical Name: hmac-sha1 Block size: 64bytes Digest size: 20bytes The Copied digest: b'\xc3T\xe7[\xc8\xa3O/$\xbd`A\xad\x07d\xe8\xae\xa2!\xb4'
アプリケーション
HMAC認証メカニズムは、パブリックネットワークサービスのようにセキュリティが重要なあらゆる場所で使用できます。たとえば、パブリックネットワークでは、パイプまたはソケットを介して重要なファイル/データを送信しています。そのファイル/データに署名してから、データを使用する前に署名をテストする必要があります。
-
WindowsでのPythonプログラミング用のIDE
この記事では、PythonforWindowsで利用できるさまざまなIDEについて学習します。 Pycharm インタラクティブなPythonコンソール Webフレームワークのサポート より速い屈折時間 開発が少ない Jupyterノートブック ほぼすべてのPythonモジュールとの互換性 スペースとハードウェアの要件が少ない 組み込みのターミナルおよびカーネル機能 さまざまなウィジェットを適用できます ウィングイデ 組み込みのデバッグツール 単体テストのサポート 簡単なコードナビゲーション機能。 コモドイデ サードパーティライブラリのサポート XMLオートコンプ
-
Pythonコードの最適化のヒント?
Pythonは他の準拠言語ほど高速でも効率的でもないことは誰もが知っていますが、ただし、Pythonコードがはるかに大きなワークロードを処理できることを示している大企業はたくさんあり、それほど遅くはないことを示しています。このセクションでは、正しいPythonプログラムをさらに高速かつ効率的に実行するために、覚えておくべきヒントをいくつか紹介します。 ヒント1:組み込み関数を使用する Pythonで効率的なコードを書くことはできますが、組み込み関数(Cで書かれている)に勝るものはありません。下の画像は、Python組み込み関数のリストを示しています ヒント2:Pythonの複数の代入を