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

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


データのセキュリティに関するすべてのIT企業の主要な懸念事項の1つ。データを投影して確認するために、複数のハッシュ手法があります。

ハッシュとは

ハッシュは、可変長のバイトシーケンスを入力として受け取り、それを固定長シーケンスに変換する関数です。ただし、元のデータ(入力バイト)を元に戻すのは簡単ではありません。たとえば、xは入力で、fはハッシュ関数です。f(x)の計算はすばやく簡単ですが、xを再度取得するのは非常に時間のかかる作業です。

ハッシュ関数からの戻り値は、ハッシュ、チェックサム、ハッシュ値、またはメッセージダイジェストと呼ばれます。

上記を以下のように要約できます-

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

「HelloWorld」メッセージをmd5ハッシュ関数に変換すると、結果はa、

になります。

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

実際のシナリオでは、ハッシュ関数は暗号化アルゴリズム、デジタル署名、指紋、パスワードなどの多くの領域で頻繁に使用されます。 pythonプログラマーとして、データやファイルの重複をチェックしたり、パブリックネットワーク経由でデータを送信するときのデータの整合性をチェックしたり、データベースにパスワードを保存したりするためのハッシュ関数が必要です。

主に使用される2つのハッシュ関数またはアルゴリズムは-

です。
  • MD5 -MD5またはメッセージダイジェストアルゴリズムは、128ビットのハッシュ値を生成します。 md5アルゴリズムにはセキュリティ上の問題がいくつかあるため、主にデータの整合性をチェックするために使用しました。

  • SHA -複数のアルゴリズムが、米国連邦情報処理標準によって開発されたアルゴリズムのSHAグループに分類されます。これらのアルゴリズムはmd5よりもはるかに安全であるため、暗号化アプリケーションを含むいくつかの分野で広く使用されています。これらのアルゴリズムによって生成されるメッセージの範囲は160ビットから512ビットです。

MD5

Python標準ライブラリには、hashlibと呼ばれるモジュールが含まれています。このモジュールには、一般的なハッシュアルゴリズムのほとんどが含まれています。ほとんどのアルゴリズムはhashlibモジュール内に実装されていますが、OpenSSLがインストールされている場合は、hashlibを使用してこれらのアルゴリズムを操作することもできます。

まず、ハッシュアルゴリズムを使用する場合は、hashlibモジュールをインポートします-

import hashlib

次に、必要なアルゴリズムまたはすべてのアルゴリズムがhashlibモジュールで現在使用可能かどうかを確認します-

>>> print(hashlib.algorithms_available)
{'sha3_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'dsaEncryption', 'dsaWithSHA', 'DSA', 'md5', 'sha384', 'sha224', 'sha3_384', 'ecdsa-with-SHA1', 'DSA-SHA', 'SHA1', 'md4', 'SHA256', 'MD4', 'sha3_512', 'whirlpool', 'sha256', 'shake_256', 'SHA', 'RIPEMD160', 'shake_128', 'SHA512', 'ripemd160', 'SHA224', 'sha', 'blake2s', 'SHA384', 'MD5'}
>

上記のhashlibモジュールで利用可能なアルゴリズムのリストには、OpenSSLを介したアルゴリズムが含まれています。

ただし、常に利用可能なアルゴリズムのリストを確認するには、algorithms_guaranteedを使用して確認できます。

>>> print(hashlib.algorithms_guaranteed)
{'sha3_512', 'sha256', 'sha3_256', 'shake_256', 'sha3_224', 'sha1', 'blake2b', 'sha512', 'md5', 'shake_128', 'sha384', 'sha224', 'sha3_384', 'blake2s'}

md5アルゴリズムを使用して1つの簡単なプログラムを作成しましょう-

コード

import hashlib
hash_obj = hashlib.md5(b'Hello, Python!')
print(hash_obj.hexdigest())

出力

a0af7810eb5fcb84c730f851361de06a

上記のコードは「こんにちは、Python!」です。文字列を入力として出力し、その文字列のHEXダイジェストを出力します。 Hexdigestは、ハッシュを表すHEX文字列を返します。

ただし、バイトシーケンスを返す場合は、-

のようにhash_obj.diget()を使用する必要があります。
import hashlib
hash_obj = hashlib.md5(b'Hello, Python!')
#To generate, sequence of bytes
print(hash_obj.digest())

出力

b'\xa0\xafx\x10\xeb_\xcb\x84\xc70\xf8Q6\x1d\xe0j'

お気づきの方もいらっしゃると思いますが、文字列リテラルの前に「b」を使用しています。これは、ハッシュ関数がパラメータとしてバイトのシーケンスのみを受け入れるため、文字列からバイトを生成するためです。

コンソールから文字列を渡したい場合は、文字列をバイトシーケンスでエンコードすることを忘れないでください-

import hashlib
mystring = input('Enter string to hash: ')
hash_obj = hashlib.md5(mystring.encode())
print(hash_obj.hexdigest())

出力

Enter string to hash: Hello, TutorialsPoint
9a5d3fad65690dcf44adaec67226abe7

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

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

  2. PythonでのCX_Freezeの使用

    時々私たちは非常にエキサイティングな何か違うものを作りたいと感じます、そして人間の性質によれば、私たちはいつもそれを共有するのが大好きです。 Pythonもそれらの願いを満たします。 Pythonを使用して、Pythonプログラムを友人と共有したい場合は、それを行うことができます。必要なのは、マシンのプログラムで使用されるすべてのモジュールに同じバージョンのPythonをインストールすることだけです。 まず、 pip install CX_Frezzeを使用してCX_Freezeモジュールをインストールする必要があります コマンドプロンプトのコマンド。 最初のステップは、この割り当て、