#!/usr/bin/python3 # Released into the public domain, where possible (http://creativecommons.org/publicdomain/zero/1.0/) import sys import re import hashlib fc = sys.argv[1] parts = re.match('^(\d{4})-(\d{4})-(\d{4})$', fc) if not parts: print("Wrong format!") sys.exit(1) fcint = int("".join(parts.group(1, 2, 3))) principal = fcint & 0xffffffff checksum = fcint >> 32 sha1 = hashlib.sha1() sha1.update(principal.to_bytes(4, byteorder='little')) calcsum = sha1.digest()[0] >> 1 print(fc, fcint, principal, checksum, calcsum) assert checksum == calcsum