Python チェックサム

Vaibhhav Khetarpal 2023年1月30日
  1. Python で hashlib.md5() 関数を使用して MD5 ファイルのチェックサムを生成およびチェックする
  2. Python で os モジュールを使用して MD5 ファイルのチェックサムを生成およびチェックする
Python チェックサム

成功した人気のあるプログラミング言語に関して言えば、ハッシュはその重要な部分であることが証明されています。ハッシュのそのようなコンポーネントの 1つは、チェックサムと呼ばれる日常のプログラミングにおいて非常に重要であり、非常に関連性があります。

この記事では、チェックサムと、MD5 ファイル用にチェックサムを生成する方法について説明します。

チェックサムは、ファイル内のエラー検出を目的として Python で使用されます。それらには、特定のファイルのデータを検証するという基本的なタスクがあります。非常に似ていますが、決定論的であるという点で、Python が提供する組み込みのハッシュとは異なります。

Python で hashlib.md5() 関数を使用して MD5 ファイルのチェックサムを生成およびチェックする

hashlib モジュールは、いくつかの異なるメッセージダイジェストおよびセキュアハッシュアルゴリズムの共通インターフェイスを実装するために使用されます。このメソッドを正常に実装するには、hashlib モジュールを Python コードにインポートする必要があります。

ここでは、主に hashlib.md5() 関数を使用し、update() および hexdigest() 関数を使用して、それぞれ 16 進値を更新および返します。

次のコードは、hashlib.md5() 関数を使用して、Python で MD5 ファイルのチェックサムを生成およびチェックします。

import hashlib


def md5(file1):
    md5h = hashlib.md5()
    with open(file1, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            md5h.update(chunk)
    return md5h.hexdigest()

このコードは、指定されたダイジェストを表す 16 進文字列を返すことに注意してください。digest() 関数だけを使用すると、パックされたバイトが返されます。プログラマーは、目的の出力を念頭に置いて、これらの関数のいずれかを使用できます。

Python で os モジュールを使用して MD5 ファイルのチェックサムを生成およびチェックする

Python の os モジュールは、オペレーティングシステムとの対話に役立ついくつかの関数へのアクセスを提供します。os モジュールは広大で、いくつかのモジュールが含まれています。これらはすべて、さまざまな目的を果たすために使用されます。

ここでは、ランダムな画像をダウンロードし、作成した Python 関数を使用して、MD5 のチェックサムを計算し、最後に Unix コマンドを使用して生成されたチェックサムと比較します。

get_checksum() 関数の関数定義:

import hashlib


def get_checksum(filename, hash_function):
    """Generate checksum for file based on hash function (MD5).

    Args:
        filename (str): Path to file that will have the checksum generated.
        hash_function (str):  Hash function name - supports MD5

    Returns:
        str`: Checksum based on Hash function of choice.

    Raises:
        Exception: Invalid hash function is entered.

    """
    hash_function = hash_function.lower()

    with open(filename, "rb") as f:
        bytes = f.read()
        if hash_function == "md5":
            readable_hash = hashlib.md5(bytes).hexdigest()

        else:
            Raise("{} is an invalid hash function. Please Enter MD5 value")

    return readable_hash

次のコードは、上記で定義した get_checksum() 関数と os モジュールを使用して、Python で MD5 ファイルのチェックサムを生成およびチェックします。

import os

pic = "g_circle-300x300.png"
resmd5 = get_checksum(pic, "md5")
os.system("md5 {}".format(pic))
print("Hash Function: MD5 - Filename: {}".format(resmd5))

MD5 は広く使用されていますが、最近壊れていることが発見され、多くの欠陥が含まれています。ファイルのチェックサムを生成してチェックするプロセスは非常にリスクが高い可能性があるため、この目的で MD5 ファイルを使用することはお勧めしません。

さらに、MD5 ファイルは、暗号で保護されたものが必要な場合、それが基準に達しているだけではないため、実際には最善ではありません。

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn