Okay, so cryptography is insanely well developed and I'm not doing anything new here, but I still thought I'd monkey around with a cryptography project. Here's what I want it to do:

1) generate an encryption and decryption key that is randomly between 20 and 40 digits long and contains random, single decimal digits.
2) encrypt a file character by character as follows:
a) randomly choose one of its decimal digits
b) multiply the ascii value of an input character by that randomly chosen digit
c) index the location of the randomly chosen digit within the encryption key
3) decrypt the same file as follows:
a) request input of the entire numeric key
b)reference the appended digits to determine which of the pre-append digits was used to encrypt the specific input character
c) divide the encrypted character's numeric value by the value of the pre-append digit to obtain its ascii value, then convert it to an ascii character

Generating the key is stupidly easy:

``````import random

def key_gen():
key = 0
key_length = random.randint(20,40)
for i in range(key_length):
key = key * 10 + random.randint(0,9)
return key
``````

But the encryption is trickier:

``````import random

def encrypt_inputs(key, inputs):
final_key, orig_length, outputs = str(key) + '.', len(final_key) ''
for i in range(len(key_string)):
a = random.randint(0, orig_length // 10)
b = random.randint(0, orig_length % 10)
outputs = outputs + str(asc(inputs[a]) * key(a*10+b))
final_key = final_key + str(a) + str(b)
return int(final_key), outputs
``````

And the decryption? The whole thing makes my head hurt.

I hope some encryption enthusiast enjoy discussing this. :)