Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python(hashlib)を使用してハッシュとメッセージダイジェストを保護する


連邦情報処理標準(FIPS)は、セキュアハッシュアルゴリズムSHA1、SHA224、SHA256、SHA384、およびSHA512を定義しています。 RSA Rivest、Shamir、およびAdlemanの名前のイニシャルで構成される頭字語は、MD5アルゴリズムを定義します。古いアルゴリズムはメッセージダイジェストと呼ばれていました。現代の用語はセキュアハッシュです。

hashlibモジュールは、次のアルゴリズムを実装するために使用されます。

  • md5
  • sha1
  • sha224
  • sha256
  • sha384
  • sha512

hashlib.new(name [、data])

目的のアルゴリズムの文字列名を最初のパラメーターとして使用するジェネリックコンストラクターです。また、上記のハッシュや、OpenSSLライブラリが提供するその他のアルゴリズムへのアクセスを許可するためにも存在します。名前付きコンストラクターはnew()よりもはるかに高速であるため、優先する必要があります。

>>> hash = hashlib.new('md5',b'hello')
>>> hash.hexdigest()
'5d41402abc4b2a76b9719d911017c592'
>>> import hashlib

個々の名前付きコンストラクターの使用

>>> msg = hashlib.sha256()
>>> msg.update(b'Simple is better than complex')
>>> msg.digest()
b'\xabz\xd8C(n\xb3\x8b\xf6\x0c\x0e\xf2\x81z\xd7\xf93\x835\xb2\xa1\x9cM\xb1S\x1f\xf7\xf9\x1av-F'
>>> msg.block_size
64
>>> msg.hexdigest()
'ab7ad843286eb38bf60c0ef2817ad7f9338335b2a19c4db1531ff7f91a762d46'
>>> msg = hashlib.md5()
>>> msg.update(b'Simple is better than complex')
>>> msg.hexdigest()
'fd34bb8fafd17f1a21d7bb6e38c8dc68'

ハッシュオブジェクトには次のメソッドがあります-

update()
ハッシュオブジェクトをバイトのようなオブジェクトで更新します。 m.update(a); m.update(b)はm.update(a + b)と同等です。
digest()
これまでにupdate()メソッドに渡されたデータのダイジェストを返します。
hexdigest()
ダイジェストは、16進数のみを含む2倍の長さの文字列オブジェクトとして返されます。
copy()
ハッシュオブジェクトのコピーを返します。これは、共通の初期サブストリングを共有するデータのダイジェストを計算するために使用できます。

Hashlibは次の属性を提供します-

alarmithms_guaranteed
すべてのプラットフォームでこのモジュールによってサポートされることが保証されているハッシュアルゴリズムの名前を含むセット。
algorithms_available
実行中のPythonインタープリターで使用可能なハッシュアルゴリズムの名前を含むセット。
digest_size
結果のハッシュのサイズ(バイト単位)。
block_size
ハッシュアルゴリズムの内部ブロックサイズ(バイト単位)。
名前
このハッシュの正規名。常に小文字であり、このタイプの別のハッシュを作成するためのnew()のパラメーターとして常に適しています。

shake_128()およびshake_256()アルゴリズムは、最大128ビットまたは256ビットのセキュリティのlength_in_bits//2を備えた可変長ダイジェストを提供します。

BLAKE2は、RFC 7693で定義されている暗号化ハッシュ関数であり、2つのフレーバーがあります-

  • BLAKE2bは、64ビットプラットフォーム用に最適化されており、1〜64バイトの任意のサイズのダイジェストを生成します。
  • BLAKE2は、8〜32ビットプラットフォーム用に最適化されており、1〜32バイトの任意のサイズのダイジェストを生成します。

  1. Pythonを使用したSHAエンコーディング?

    データのセキュリティに関するすべてのIT企業の主要な懸念事項の1つ。データを投影して確認するために、複数のハッシュ手法があります。 ハッシュとは ハッシュは、可変長のバイトシーケンスを入力として受け取り、それを固定長シーケンスに変換する関数です。ただし、元のデータ(入力バイト)を元に戻すのは簡単ではありません。たとえば、xは入力で、fはハッシュ関数です。f(x)の計算はすばやく簡単ですが、xを再度取得するのは非常に時間のかかる作業です。 ハッシュ関数からの戻り値は、ハッシュ、チェックサム、ハッシュ値、またはメッセージダイジェストと呼ばれます。 上記を以下のように要約できます- 「

  2. Pythonを使用したMD5ハッシュエンコーディング?

    データのセキュリティに関するすべてのIT企業の主要な懸念事項の1つ。データを投影して確認するために、複数のハッシュ手法があります。 ハッシュとは ハッシュは、可変長のバイトシーケンスを入力として受け取り、それを固定長シーケンスに変換する関数です。ただし、元のデータ(入力バイト)を元に戻すのは簡単ではありません。たとえば、xは入力で、fはハッシュ関数です。f(x)の計算はすばやく簡単ですが、xを再度取得するのは非常に時間のかかる作業です。 ハッシュ関数からの戻り値は、ハッシュ、チェックサム、ハッシュ値、またはメッセージダイジェストと呼ばれます。 上記を以下のように要約できます- 「