ciphers.caesar_cipher¶
Attributes¶
Functions¶
|
brute_force |
|
decrypt |
|
encrypt |
Module Contents¶
- ciphers.caesar_cipher.brute_force(input_string: str, alphabet: str | None = None) dict[int, str]¶
brute_force¶
Returns all the possible combinations of keys and the decoded strings in the form of a dictionary
Parameters:¶
input_string: the cipher-text that needs to be used during brute-force
Optional:
alphabet (
None): the alphabet used to decode the cipher, if not specified, the standard english alphabet with upper and lowercase letters is used
More about brute force¶
Brute force is when a person intercepts a message or password, not knowing the key and tries every single combination. This is easy with the caesar cipher since there are only all the letters in the alphabet. The more complex the cipher, the larger amount of time it will take to do brute force
Ex: Say we have a
5letter alphabet (abcde), for simplicity and we intercepted the following message:dbc, we could then just write out every combination:ecd… and so on, until we reach a combination that makes sense:cabFurther reading¶
Doctests¶
>>> brute_force("jFyuMy xIH'N vLONy zILwy Gy!")[20] "Please don't brute force me!"
>>> brute_force(1) Traceback (most recent call last): TypeError: 'int' object is not iterable
- ciphers.caesar_cipher.decrypt(input_string: str, key: int, alphabet: str | None = None) str¶
decrypt¶
Decodes a given string of cipher-text and returns the decoded plain-text
Parameters:¶
input_string: the cipher-text that needs to be decoded
key: the number of letters to shift the message backwards by to decode
Optional:
alphabet (
None): the alphabet used to decode the cipher, if not specified, the standard english alphabet with upper and lowercase letters is used
Returns:
A string containing the decoded plain-text
More on the caesar cipher¶
The caesar cipher is named after Julius Caesar who used it when sending secret military messages to his troops. This is a simple substitution cipher where very character in the plain-text is shifted by a certain number known as the “key” or “shift”. Please keep in mind, here we will be focused on decryption.
Example: Say we have the following cipher-text:
Jgnnq, ecrvckpAnd our alphabet is made up of lower and uppercase letters:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZAnd our shift is
2To decode the message, we would do the same thing as encoding, but in reverse. The first letter,
Jwould becomeH(remember: we are decoding) becauseHis two letters in reverse (to the left) ofJ. We would continue doing this. A letter likeawould shift back to the end of the alphabet, and would becomeZorYand so on.Our final message would be
Hello, captainFurther reading¶
Doctests¶
>>> decrypt('bpm yCqks jzwEv nwF rCuxA wDmz Bpm tiHG lwo', 8) 'The quick brown fox jumps over the lazy dog'
>>> decrypt('s nWjq dSjYW cWq', 8000) 'A very large key'
>>> decrypt('f qtbjwhfxj fqumfgjy', 5, 'abcdefghijklmnopqrstuvwxyz') 'a lowercase alphabet'
- ciphers.caesar_cipher.encrypt(input_string: str, key: int, alphabet: str | None = None) str¶
encrypt¶
Encodes a given string with the caesar cipher and returns the encoded message
Parameters:¶
input_string: the plain-text that needs to be encoded
key: the number of letters to shift the message by
Optional:
alphabet (
None): the alphabet used to encode the cipher, if not specified, the standard english alphabet with upper and lowercase letters is used
Returns:
A string containing the encoded cipher-text
More on the caesar cipher¶
The caesar cipher is named after Julius Caesar who used it when sending secret military messages to his troops. This is a simple substitution cipher where every character in the plain-text is shifted by a certain number known as the “key” or “shift”.
Example: Say we have the following message:
Hello, captainAnd our alphabet is made up of lower and uppercase letters:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZAnd our shift is
2We can then encode the message, one letter at a time.
Hwould becomeJ, sinceJis two letters away, and so on. If the shift is ever two large, or our letter is at the end of the alphabet, we just start at the beginning (Zwould shift toathenband so on).Our final message would be
Jgnnq, ecrvckpFurther reading¶
Doctests¶
>>> encrypt('The quick brown fox jumps over the lazy dog', 8) 'bpm yCqks jzwEv nwF rCuxA wDmz Bpm tiHG lwo'
>>> encrypt('A very large key', 8000) 's nWjq dSjYW cWq'
>>> encrypt('a lowercase alphabet', 5, 'abcdefghijklmnopqrstuvwxyz') 'f qtbjwhfxj fqumfgjy'
- ciphers.caesar_cipher.choice¶