Merge pull request #3759 from Markus-D-M/contracts_encryption

MISC Two new encryption themed contracts - caesar and vigenere
This commit is contained in:
hydroflame
2022-07-21 02:33:52 -04:00
committed by GitHub
2 changed files with 264 additions and 0 deletions
@@ -370,3 +370,35 @@ The list contains the name of (i.e. the value returned by
| | | aaaaaaaaaaaaa -> 1a91031 |
| | | aaaaaaaaaaaaaa -> 1a91041 |
+-----------------------------------------+------------------------------------------------------------------------------------------+
| Encryption I: Caesar Cipher | | Caesar cipher is one of the simplest encryption technique. It is a type of |
| | | substitution cipher in which each letter in the plaintext is replaced by a letter some |
| | | fixed number of positions down the alphabet. For example, with a left shift of 3, D |
| | | would be replaced by A, E would become B, and A would become X (because of rotation). |
| | | You are given an array with two elements.The first element is the plaintext, the |
| | | second element is the left shift value. Return the ciphertext as uppercase string. |
| | | Spaces remains the same. |
+-----------------------------------------+------------------------------------------------------------------------------------------+
| Encryption II: Vigenère Cipher | | Vigenère cipher is a type of polyalphabetic substitution. It uses the Vigenère square |
| | | to encrypt and decrypt plaintext with a keyword. |
| | | Vignenère square: |
| | | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
| | | +---------------------------------------------------- |
| | | A | A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
| | | B | B C D E F G H I J K L M N O P Q R S T U V W X Y Z A |
| | | C | C D E F G H I J K L M N O P Q R S T U V W X Y Z A B |
| | | D | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C |
| | | E | E F G H I J K L M N O P Q R S T U V W X Y Z A B C D |
| | | ... |
| | | Y | Y Z A B C D E F G H I J K L M N O P Q R S T U V W X |
| | | Z | Z A B C D E F G H I J K L M N O P Q R S T U V W X Y |
| | | For encryption each letter of the plaintext is paired with the corresponding letter of |
| | | a repeating keyword. For example, the plaintext DASHBOARD is encrypted with the |
| | | keyword LINUX: |
| | | Plaintext: DASHBOARD |
| | | Keyword: LINUXLINU |
| | | So, the first letter D is paired with the first letter of the key L. Therefore, row D |
| | | and column L of the Vigenère square are used to get the first cipher letter O. This |
| | | must be repeated for the whole ciphertext. |
| | | You are given an array with two elements. The first element is the plaintext, the |
| | | second element is the keyword. Return the ciphertext as uppercase string. |
+-----------------------------------------+------------------------------------------------------------------------------------------+