ファイルのハッシュを見つけるPythonプログラム

ハッシュ関数は任意の量のデータを受け取り、固定長のビット文字列を返します。 関数の出力はダイジェストメッセージと呼ばれます。

これらは、認証目的の暗号化で広く使用されています。 MD5、SHA-1などの多くのハッシュ関数があります。詳細については、このページを参照してください 暗号化におけるハッシュ関数

この例では、ファイルをハッシュする方法を説明します。 SHA-1ハッシュアルゴリズムを使用します。 SHA-1のダイジェストは160ビット長です。

一部のファイルはメモリに一度に収まるほど大きいため、ファイルからデータを一度にフィードすることはありません。 ファイルを小さなチャンクに分割すると、プロセスメモリが効率的になります。

ハッシュを見つけるためのソースコード

# Python rogram to find the SHA-1 message digest of a file

# importing the hashlib module
import hashlib

def hash_file(filename):
   """"This function returns the SHA-1 hash
   of the file passed into it"""

   # make a hash object
   h = hashlib.sha1()

   # open file for reading in binary mode
   with open(filename,'rb') as file:

       # loop till the end of the file
       chunk = 0
       while chunk != b'':
           # read only 1024 bytes at a time
           chunk = file.read(1024)
           h.update(chunk)

   # return the hex representation of digest
   return h.hexdigest()

message = hash_file("track1.mp3")
print(message)

出力

633d7356947eec543c50b76a1852f92427f4dca9

このプログラムでは、ファイルをバイナリモードで開きます。 ハッシュ関数はで利用可能です hashlib モジュール。 を使用してファイルの終わりまでループします while ループ。 最後に到達すると、空のバイトオブジェクトを取得します。

各反復で、ファイルから1024バイト(この値は必要に応じて変更できます)のみを読み取り、ハッシュ関数を更新します。

最後に、ダイジェストメッセージを16進表現で返します。 hexdigest() 方法。



Hope this helps!

Source link