Enaio SHA256 Checksumme berechnen

Wer sich die Frage gestellt hat, wie sich die Checksumme der Dateien im enaio genau berechnet ist damit nicht alleine gewesen.

Bei den Checksummen in der enaio Tabelle osdochash handelt es sich um spezielle SHA256 Checksummen. Hintergrund hierfür ist, dass in enaio ein Dokument aus mehreren Dateien bestehen kann. Bekanntestes Beispiel sind hier die Single Page Tiffs (Z.B. Typ 3 aka. Farbbild).

Hierbei wird jeweils die Checksumme der einzelnen Dateien berechnet, als HEX Strings in Grossbuchstaben aneinander gehängt und davon erneut die Checksumme als SHA256 berechnet.

Hier ein kleines Beispiel in Python:

import hashlib

def os_hash(file_path_list: list[str]) -> str:
    """
    Calculate enaio flavored sha256 Checksum of files. 
    A enaio document can contain 1 to n files (for example single page tiffs).
    
    IMPORTANT: 
    Images of single page documents will be processed internally. 
    As a result, the source files does not necessarily correspond to the files in the enaio.
    The checksum represents the files in the work directory.
    """
    hashes = ""
    for file in file_path_list:
        with open(file,"rb") as reader:
            sha256 = hashlib.sha256()
            for byte_block in iter(lambda r=reader: r.read(4096),b""):
                sha256.update(byte_block)
            hashes = hashes + sha256.hexdigest().upper()
    sha256 = hashlib.sha256()
    sha256.update(hashes.encode())

    return sha256.hexdigest().upper()

# Single Page Tiff Example
TIF_SHA_HASH = os_hash(["0000019D.000", "0000019D.001"])
print(TIF_SHA_HASH)

# PDF Example
PDF_SHA_HASH = os_hash(["example2.pdf"])
print(PDF_SHA_HASH)

3 „Gefällt mir“