commit a0298d70bd76309e85dd5fd2599094b9d5a8ccdf Author: Kevin Veen-Birkenbach Date: Thu Dec 8 13:12:12 2022 +0100 first draft diff --git a/scripts/generate-hashtable.py b/scripts/generate-hashtable.py new file mode 100644 index 0000000..a32085a --- /dev/null +++ b/scripts/generate-hashtable.py @@ -0,0 +1,48 @@ +import argparse +import random +import string + +def getPassword(): + characters = string.ascii_letters + string.digits + return ''.join(random.choice(characters) for i in range(int(128*quota_factor))).upper(); + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('-a', '--amount',type=int, dest='amount_of_secret_holders',required=True) + parser.add_argument('-q', '--quota', type=int, dest='decryption_quota', choices=range(1,101),required=True) + args = parser.parse_args() + amount_of_secret_holders = args.amount_of_secret_holders; + decryption_quota = args.decryption_quota; + quota_factor=decryption_quota/100; + password_divisor=int(amount_of_secret_holders*quota_factor) + amount_of_partner_secrets=(amount_of_secret_holders * password_divisor) + required_passwords=amount_of_partner_secrets * ( amount_of_secret_holders -1) ; + print(quota_factor); + print(amount_of_secret_holders); + print(decryption_quota); + print(required_passwords); + + # generate splitted password matrix + secret_holders = {} + secret_holder_index = 0; + + while secret_holder_index < amount_of_secret_holders: + secret_holders[secret_holder_index] = {}; + partner_secret_holder_index = 0; + while partner_secret_holder_index < amount_of_secret_holders: + if partner_secret_holder_index != secret_holder_index : + secret_holders[secret_holder_index][partner_secret_holder_index] = {}; + secret_holders[secret_holder_index][partner_secret_holder_index][secret_holder_index] = {}; + index=0 + while index < password_divisor: + secret_holders[secret_holder_index][partner_secret_holder_index][secret_holder_index][index] = getPassword(); + index += 1; + partner_secret_holder_index += 1; + secret_holder_index += 1; + print(secret_holders); + + # generate passwords + passwords = [] + while secret_holder_index < amount_of_secret_holders: + + secret_holder_index += 1; \ No newline at end of file