total = 10
print("RANDOM:")
import random
for n in range(total):
rest = random.randint(0,10**10-1)
code = "{n:06}{rest:010}".format(n=n, rest=rest)
formatted = code[0:4] + "-" + code[4:8] + "-" + code[8:12] + "-" + code[12:]
print(formatted)
print("TESTABLE:")
import hashlib
SALT = "some_salt"
def generate(n):
_bytes = (str(n) + SALT).encode("ascii")
_hash = hashlib.md5(_bytes).hexdigest()
rest = int(_hash, base=16) % (10**10)
code = "{n:06}{rest:010}".format(n=n, rest=rest)
formatted = code[0:4] + "-" + code[4:8] + "-" + code[8:12] + "-" + code[12:]
return formatted
def test(code):
raw_code = code.replace("-","")
n = int(raw_code[0:6])
return code == generate(n)
for n in range(total):
code = generate(n)
print(code, test(code))
dG90YWwgPSAxMAoKcHJpbnQoIlJBTkRPTToiKQppbXBvcnQgcmFuZG9tCgpmb3IgbiBpbiByYW5nZSh0b3RhbCk6CiAgICByZXN0ID0gcmFuZG9tLnJhbmRpbnQoMCwxMCoqMTAtMSkKICAgIGNvZGUgPSAie246MDZ9e3Jlc3Q6MDEwfSIuZm9ybWF0KG49biwgcmVzdD1yZXN0KQogICAgZm9ybWF0dGVkID0gY29kZVswOjRdICsgIi0iICsgY29kZVs0OjhdICsgIi0iICsgY29kZVs4OjEyXSArICItIiArIGNvZGVbMTI6XQogICAgcHJpbnQoZm9ybWF0dGVkKQoKCnByaW50KCJURVNUQUJMRToiKQoKaW1wb3J0IGhhc2hsaWIKClNBTFQgPSAic29tZV9zYWx0IgoKZGVmIGdlbmVyYXRlKG4pOgogICAgX2J5dGVzID0gKHN0cihuKSArIFNBTFQpLmVuY29kZSgiYXNjaWkiKQogICAgX2hhc2ggPSBoYXNobGliLm1kNShfYnl0ZXMpLmhleGRpZ2VzdCgpCiAgICByZXN0ID0gaW50KF9oYXNoLCBiYXNlPTE2KSAlICgxMCoqMTApCiAgICBjb2RlID0gIntuOjA2fXtyZXN0OjAxMH0iLmZvcm1hdChuPW4sIHJlc3Q9cmVzdCkKICAgIGZvcm1hdHRlZCA9IGNvZGVbMDo0XSArICItIiArIGNvZGVbNDo4XSArICItIiArIGNvZGVbODoxMl0gKyAiLSIgKyBjb2RlWzEyOl0KICAgIHJldHVybiBmb3JtYXR0ZWQKCmRlZiB0ZXN0KGNvZGUpOgogICAgcmF3X2NvZGUgPSBjb2RlLnJlcGxhY2UoIi0iLCIiKQogICAgbiA9IGludChyYXdfY29kZVswOjZdKQogICAgcmV0dXJuIGNvZGUgPT0gZ2VuZXJhdGUobikKICAgICAgICAKZm9yIG4gaW4gcmFuZ2UodG90YWwpOgogICAgY29kZSA9IGdlbmVyYXRlKG4pCiAgICBwcmludChjb2RlLCB0ZXN0KGNvZGUpKQ==