• Classical Cryptography

checkio coding js

Hello CheckiO users! 🙂

Today, we are happy to share a series of missions based on classical pen and paper cryptography, created by

We have prepared a deal for those who want to make the year 2022 - the code year. Use Promo Code HAPPY2022 before February 1st to buy One Year Awesome with a 40% discount. Happy Coding and Happy New Year!

Challenge yourself with our missions

Atbash Cipher by Vykers - Atbash is one of the oldest known ciphers, created in Middle East around 600 B.C.; the first known examples of it can be found in the Dead Sea Scrolls (ancient religious Hebrew manuscripts), where it was used to encrypt certain important names and words.

atbash('testing') == 'gvhgrmt'
atbash('Hello, world!') == 'Svool, dliow!'

Scytale Encryption by Vykers - Scytale is one of the first known cryptographic devices, used by ancient Greeks, namely Spartans, during their military campaigns.

scytale_decipher('aaaatctwtkdn', 'dawn') == 'attackatdawn'
scytale_decipher('hdoeerlallrdow', 'world') == 'hellodearworld'
scytale_decipher('totetshpmeecisendysescwticsriasraytlaegphet', 'sicret') == None     #Crib is not in plaintext
scytale_decipher('aaaatctwtkdn', 'at') == None

Rotating Grille Cipher by Vykers - Rotating grille cipher is a transposition cipher that uses a special square sheet of cardboard (the grille ) with holes cut in it. To encrypt a message, sender must place the grille on an empty sheet of paper and write letters of the plaintext into the holes left to right, top to bottom. After filling all the holes, the grille is rotated 90 degrees clockwise (the holes move to empty spaces) and the process continues. After the grille was rotated 2 more times, there should be no empty spaces on the paper; if the message is not finished, the algorithm is repeated on the next sheet.

grille_encrypt('cardangrilletest', ['.X..', '.X..', '...X', 'X...']) == 'actilangeslrdret'
grille_encrypt('quickbrownfoxjumpsoverthelazydog',
                ['X...', '...X', '..X.', '.X..']) == 'qxwkbnjufriumcoopyeerldsatoogvhz'
grille_encrypt('quickbrownfoxjumpsoverthelazydog', 
                ['.XX.', '.XX.', '..X.', 'X...']) == None
grille_encrypt('cardangrilletest', ['...X', '....', '....', '....']) == None

Grille Cipher Attack by Vykers - In cryptanalysis, Known Plaintext Attack , or KPA , is a mode of attack on a cipher where the analyst has access to both the ciphertext and to the corresponding plaintext; those can be used to derive the secret key and decipher all further messages encrypted with it. Some types of ciphers are very vulnerable to KPA: for instance, Caesar's cipher can be broken knowing just one pair of corresponding plaintext and ciphertext symbols; in other cases, finding the key requires a bit more work.

find_grille('weareallfromxanthcubesaidquicklyjustvisitingphazewewontbeforlong',
            'wejhewucuaeswtbrveeoisantsalilbifdteifrqunooigrmplxcakhonnlagtyz') == ['X...X...',
                                                                                    '.X.....X',
                                                                                    '..X...X.',
                                                                                    '...X.X..',
                                                                                    'X.....X.',
                                                                                    '...X...X',
                                                                                    '..X.X...',
                                                                                    '.X...X..']

Playfair Cipher Attack by Vykers - Playfair Cipher is a manual substitution cipher invented in 1854. Unlike other substitution ciphers that existed at the time, Playfair doesn't encrypt single letters - instead it works with pairs of letters, or bigrams . Let's remind ourselves of the encryption algorithm:

playfair_attack('pythonsxstandardlibraryisveryextensiveofferingawiderangeofstuffx',
                'aiwblarskwphydowzehmhoieksxlixgwvufxlvzqvizxbehdycxlphyxzqkwcvsi') == 'dmhfiulxgbxvqhyx'

💡 3 Highlights from the Python world:

Why You Should Start Using Pathlib as an Alternative to the OS Module - Pathlib is part of the standard Python library and has been introduced since Python 3.4 (see PEP 428) with the goal of representing paths not as simple strings but as supercharged Python objects with many useful methods and attributes under the hood.

Python interview questions are a great way to learn details of Python. - A post about a job interview for Python started me a-googling. I searched the phrase "python interview questions" and up popped a variety of Python interview question lists. Reading through them has really helped me to solidify details of the language. Other learners might benefit too.

It’s time to stop using Python 3.6 - Python 3.6 is reaching its end of life as of December 2021. No more bug fixes. No more security fixes.

Our congratulations to the winner of December 2021 - Magu - you are totally Awesome and we are very glad to have you here with us! 👏🏼

The users who’ve made the TOP 3 this month are Vykers, Phil15, and kurosawa4434.You are doing great, guys! Keep on coding! 👏🏼

Become Awesome

  • No Ads
  • No Limits
  • More Content

Welcome to CheckiO - games for coders where you can improve your codings skills.

The main idea behind these games is to give you the opportunity to learn by exchanging experience with the rest of the community. Every day we are trying to find interesting solutions for you to help you become a better coder.

Join the Game