For programmers day, I want to create an encrypted message for colleagues. It should be easily decryptable by the most part without much experience in encryption. Can you tell me an algorithm which is easily guessed and the message revealed?
-
3caesar cypher or any other type of substitution cypher? – schroeder Sep 12 '16 at 07:09
-
2Regardless of what you do in the end, it would be interesting to hear what problem you came up with, and what the results were. :) – ilkkachu Sep 12 '16 at 09:00
-
Also, have you considered asking this over on Cryptography? – Miller86 Sep 12 '16 at 11:08
-
base64 "encryption" comes to mind... – dandavis Sep 12 '16 at 15:46
-
The following answer (while not exactly what your looking for) might be informative http://security.stackexchange.com/questions/127961/encrypting-text-data-by-replacing-characters/127993#127993 – CaffeineAddiction Oct 26 '16 at 19:27
-
string.reverse(), string.toLeet(), but string.toString() (aka ROT0) is probably the easiest. – Thomas Weller Oct 26 '16 at 19:28
2 Answers
A substitution cipher (A -> K, B -> C...) should yield rather quickly to frequency analysis, if the plaintext is a natural language text of sufficient length. It helps if they can guess a partial plaintext (the message starts with "Hello", or ends with "glory to arstotzka" oslt.). Leaving the spaces between words intact would be an instant giveaway for shorter words.
You mentioned programmers, so I wonder if you can expect your solvers to create a program to e.g. brute-force a limited keyspace. They'd need to know or find out the algorithm, though. Also, natural language text ciphered with a stream cipher (xor) using a repeating keystream is rather easily solvable since the binary representations of spaces and letters give away parts of the plaintext when looking at ciphertext bytes enciphered with the same keystream byte. Though that may require some background knowledge to get the right insight.
All in all, a good puzzle would depend on accurately guessing the level of the solvers. One possibility would be to build the problem in parts, starting with easier systems and progressing to harder ones. Any book/source on historical ciphers would likely have many examples on what to use.
- 2,106
- 1
- 11
- 15
-
Another "substitution cipher" that any good programmer should easily pick up on is a conversion from ASCII to Binary, Hex, or Base64 – CaffeineAddiction Oct 26 '16 at 19:30
a rather simple, but resilient encryption, is Vigenere. It earned the name "the indecipherable cipher" and does some shifting on each letter.
- 105
- 3
-
Just note that the Vigene cypher is a series of Caesar cyphers. Not a problem at all to bruteforce with today's computing power. A valid point tot he question though. – grochmal Oct 26 '16 at 19:38
-
I think a vignere cipher is probably the upper level of a human-solvable "puzzle" type cipher- the kind that only takes several hours of work by hand. If you have programmers, then probably any cipher is just going to be run through a decryption suite so it won't matter which one you use. – J Kimball Oct 26 '16 at 19:57
-
You could always do a dual key, as seen here, or even an auto-keyed Vigenere<>, and the greatest example, of course, is the German Enigma. – Garrison Pendergrass Oct 27 '16 at 15:02