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

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


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

ハッシュとは

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

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

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

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

「HelloWorld」メッセージをsha1ハッシュ関数に変換すると、結果は次のようになります。0a4d55a8d778e5022fab701977c5d840bbc486d0、

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

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

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

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

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

SHA1

SHAは、SHA1、SHA224、SHA256、SHA384、SHA512などのアルゴリズムのグループです。 SHA1アルゴリズムは、md5よりも安全であると考えられているため、多くの分野で広く使用されています。

まず、ハッシュアルゴリズムを使用する場合は、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'}

sha1アルゴリズムを理解するための簡単なプログラムを作成しましょう

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

出力

00d375a3693fde63e9540b91656c6ac5b5341f7c

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

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

出力

b'\x00\xd3u\xa3i?\xdec\xe9T\x0b\x91elj\xc5\xb54\x1f|'

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

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

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

出力

Enter string to hash: Hello, TutorialsPoint
b20d14ead3e50552fc1f1cd96696b111a163dffa

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

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

  2. PythonでのCX_Freezeの使用

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