Sunday, December 8, 2019

cipher - Christmas Day Cryptogram / Riddle


This is a cryptogram puzzle, with some riddle-style clues to help you solve it. When you find the thing that links all of the clues, that will let you deduce the keys to decipher the cryptogram.


Here are the clues:





  • Christmas day




  • cross bones





  • t




  • amphibian surmounts




  • hnadwrintig






and here is the ciphertext:



Fbocov quq vdbwrv'x lbzf mji uxp vr tfdan;
Uli sbed "Mnd Thsouf jt" bbw lkq nys megrr.
Oh lbjmp rbh xmtn; gcb Dvtim xjudgttb "Fb!
Mua Gsrrjexh bv!" faifbavp gfv galncr huu.



One of the Rumkin cipher tools can be used for decoding.



You'll need two keys to decode the cryptogram; both keys are numbers with their digits spelled out in words, for example the number 1234567890 would be represented like this: onetwothreefourfivesixseveneightninezero (just an example, not one of the keys). Decimal points are ignored and there are no thousands separators or anything else except for the digits zero to nine.


You might want to refer to this question and its answers:
What characteristics of a ciphertext can be indicators of a particular cipher?
and you will probably need to use reference materials. Feel free to use any resources at your disposal (i.e. using Google is ok).


The plaintext consists mostly of English dictionary words.


Your challenge is to work out the two keys (and the reasoning behind them) and the plaintext. Also the reasoning behind each of the clues.


In the spirit of teamwork, partial answers are welcome.


I'd also be interested in constructive feedback on the puzzle itself, so my question is also "how could this puzzle be improved?"




To make this puzzle slightly easier, I'm adding a checksum for each of the keys. That way you can tell if you have one of the keys right (even if you don't have the other key or you're not sure what cipher is in use). The checksums are:




c40c8102ca3c33705325a8dd614c49a2d29c82f3fce529528f2fe4001fac8a233b0d6916f1c604643a9c375ca3e02589ed5babf8c9e47d0629e145ec13ca8ef0



and



a077332a1720b83b9a1c26619f3179dcfff1ef205f09468996c579aedd5ed5fb285acfb02c085768d8fb1cf2bfea05b02e993d947a324e361254bd68824e16e3



They are SHA-512 (SHA2) hashes generated using https://quickhash.com/hash-sha512-online. You can test possible keys by pasting the possible key into 'input data' and seeing what comes up in 'output data' when you click the 'generate' button.


Given that you already have quite a lot of information about the keys, it might be feasible to attack the hashes to find the keys. This would be a legitimate way of solving the puzzle as far as I'm concerned. But you'll still be expected to explain why those keys have been chosen. :)



Answer




This answer gives the two numbers, got by brute-forcing the hashes rather than solving the riddle, and the final solution. For the solution of the riddle, see Len's and rand al'thor's answers.


I have cracked both hashes using the Mathematica program below:


Hash 1 is:



Hash 1 matched number 'sixsixseventhreeeightfour' (667384) It seems to be ASCII for "BIT".



Hash 2 is:



Hash 2 matched number 'nineeightzerosixsixfive' (980665) I can't seem to decipher the meaning, since one of the values isn't a print ASCII character.




The answer decrypts to the message:



Nature and nature's laws lay hid in night; God said "Let Newton be" and all was light. It could not last; the Devil shouting "Ho! Let Einstein be!" restored the status quo.



Using the Mathematica program


Do[
iStr = ToString[i];
iLen = StringLength[iStr];
numStr = "";
Do[

posStr = StringTake[iStr, {j}];
If[posStr == "0", numStr = numStr <> "zero"];
If[posStr == "1", numStr = numStr <> "one"];
If[posStr == "2", numStr = numStr <> "two"];
If[posStr == "3", numStr = numStr <> "three"];
If[posStr == "4", numStr = numStr <> "four"];
If[posStr == "5", numStr = numStr <> "five"];
If[posStr == "6", numStr = numStr <> "six"];
If[posStr == "7", numStr = numStr <> "seven"];
If[posStr == "8", numStr = numStr <> "eight"];

If[posStr == "9", numStr = numStr <> "nine"];
, {j, iLen}];
iHash = IntegerString[Hash[numStr, "SHA512"], 16, 128];
If[iHash ==
"a077332a1720b83b9a1c26619f3179dcfff1ef205f09468996c579aedd5ed5fb2\
85acfb02c085768d8fb1cf2bfea05b02e993d947a324e361254bd68824e16e3",
Print["Hash 2 matched number '" <> numStr <> "'"];
,];
If[iHash ==
"c40c8102ca3c33705325a8dd614c49a2d29c82f3fce529528f2fe4001fac8a233b0d69\

16f1c604643a9c375ca3e02589ed5babf8c9e47d0629e145ec13ca8ef0",
Print["Hash 1 matched number '" <> numStr <> "'"];
,];
If[Mod[i, 10000] == 0, Print["Tested up to " <> iStr];];
, {i, 10000000}];

No comments:

Post a Comment

classical mechanics - Moment of a force about a given axis (Torque) - Scalar or vectorial?

I am studying Statics and saw that: The moment of a force about a given axis (or Torque) is defined by the equation: $M_X = (\vec r \times \...