1# Step 03 - validate raw dictionary file. 2# 3# CRC32, MD5, SHA1 and SHA256 checksums for raw binary dictionary are checked. 4 5import hashlib 6import zlib 7 8bin_path = "dictionary.bin" 9 10with open(bin_path, "rb") as raw: 11 data = raw.read() 12 13def check_digest(name, expected, actual): 14 if expected == actual: 15 print("[OK] " + name) 16 else: 17 print("[ERROR] " + name + " | " + expected + " != " + actual) 18 19 20check_digest( 21 "CRC32", # This is the only checksum provided in RFC. 22 "0x5136cb04", 23 hex(zlib.crc32(data))) 24 25check_digest( 26 "MD5", 27 "96cecd2ee7a666d5aa3627d74735b32a", 28 hashlib.md5(data).hexdigest()) 29 30check_digest( 31 "SHA1", 32 "72b41051cb61a9281ba3c4414c289da50d9a7640", 33 hashlib.sha1(data).hexdigest()) 34 35check_digest( 36 "SHA256", 37 "20e42eb1b511c21806d4d227d07e5dd06877d8ce7b3a817f378f313653f35c70", 38 hashlib.sha256(data).hexdigest()) 39