# Step 03 - validate raw dictionary file. # # CRC32, MD5, SHA1 and SHA256 checksums for raw binary dictionary are checked. import hashlib import zlib bin_path = "dictionary.bin" with open(bin_path, "rb") as raw: data = raw.read() def check_digest(name, expected, actual): if expected == actual: print("[OK] " + name) else: print("[ERROR] " + name + " | " + expected + " != " + actual) check_digest( "CRC32", # This is the only checksum provided in RFC. "0x5136cb04", hex(zlib.crc32(data))) check_digest( "MD5", "96cecd2ee7a666d5aa3627d74735b32a", hashlib.md5(data).hexdigest()) check_digest( "SHA1", "72b41051cb61a9281ba3c4414c289da50d9a7640", hashlib.sha1(data).hexdigest()) check_digest( "SHA256", "20e42eb1b511c21806d4d227d07e5dd06877d8ce7b3a817f378f313653f35c70", hashlib.sha256(data).hexdigest())