import random from utils import AlphabetUtils as au def encrypt_text(cleartext: str, key: [int]): """ Encrypts the given text with the given key :param cleartext: The text to encrypt :param key: The key to use. Has to be a list of indices of the alphabet, so [0...25] shuffled :return: The encrypted text """ resulting = '' for char in cleartext: charIndex = au.get_index_of_letter(char) cipherIndex = key.index(charIndex) cipherChar = au.get_letter_at_index(cipherIndex) resulting += cipherChar return resulting def decrypt_text(ciphertext: str, key: [int]): """ Decrypts the given ciphertext with the given key :param ciphertext: The text to decrypt :param key: The key to use. Has to be a list of indices of the alphabet, so [0...25] shuffled :return: The decrypted text """ resulting = '' for char in ciphertext: charIndex = au.get_index_of_letter(char) clearIndex = key[charIndex] clearChar = au.get_letter_at_index(clearIndex) resulting += clearChar return resulting def _generate_key(): indices = [i for i in range(26)] random.shuffle(indices) return indices if __name__ == '__main__': key = _generate_key() print(key) encrypted = encrypt_text('BonkRocks', key) print(encrypted) print(decrypt_text(encrypted, key))