ハッシュ関数は任意の量のデータを受け取り、固定長のビット文字列を返します。 関数の出力はダイジェストメッセージと呼ばれます。
これらは、認証目的の暗号化で広く使用されています。 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