ciphers.permutation_cipher¶
The permutation cipher, also called the transposition cipher, is a simple encryption technique that rearranges the characters in a message based on a secret key. It divides the message into blocks and applies a permutation to the characters within each block according to the key. The key is a sequence of unique integers that determine the order of character rearrangement.
For more info: https://www.nku.edu/~christensen/1402%20permutation%20ciphers.pdf
Functions¶
|
Decrypt an encrypted message using a permutation cipher with block rearrangement. |
|
Encrypt a message using a permutation cipher with block rearrangement using a key. |
|
Generate a random permutation key of a specified block size. |
|
Generate a valid block size that is a factor of the message length. |
|
Driver function to pass message to get encrypted, then decrypted. |
Module Contents¶
- ciphers.permutation_cipher.decrypt(encrypted_message: str, key: list[int]) str ¶
Decrypt an encrypted message using a permutation cipher with block rearrangement.
- Args:
encrypted_message (str): The encrypted message. key (list[int]): The permutation key for decryption.
- Returns:
str: The decrypted plaintext message.
- Example:
>>> encrypted_message, key = encrypt("HELLO WORLD") >>> decrypted_message = decrypt(encrypted_message, key) >>> decrypted_message 'HELLO WORLD'
- ciphers.permutation_cipher.encrypt(message: str, key: list[int] | None = None, block_size: int | None = None) tuple[str, list[int]] ¶
Encrypt a message using a permutation cipher with block rearrangement using a key.
- Args:
message (str): The plaintext message to be encrypted. key (list[int]): The permutation key for decryption. block_size (int): The size of each permutation block.
- Returns:
tuple: A tuple containing the encrypted message and the encryption key.
- Example:
>>> encrypted_message, key = encrypt("HELLO WORLD") >>> decrypted_message = decrypt(encrypted_message, key) >>> decrypted_message 'HELLO WORLD'
- ciphers.permutation_cipher.generate_permutation_key(block_size: int) list[int] ¶
Generate a random permutation key of a specified block size.
- Args:
block_size (int): The size of each permutation block.
- Returns:
list[int]: A list containing a random permutation of digits.
- Example:
>>> random.seed(0) >>> generate_permutation_key(4) [2, 0, 1, 3]
- ciphers.permutation_cipher.generate_valid_block_size(message_length: int) int ¶
Generate a valid block size that is a factor of the message length.
- Args:
message_length (int): The length of the message.
- Returns:
int: A valid block size.
- Example:
>>> random.seed(1) >>> generate_valid_block_size(12) 3
- ciphers.permutation_cipher.main() None ¶
Driver function to pass message to get encrypted, then decrypted.
Example: >>> main() Decrypted message: HELLO WORLD