| Welcome to Crypto. We hope you enjoy your visit. You're currently viewing our forum as a guest. This means you are limited to certain areas of the board and there are some features you can't use. If you join our community, you'll be able to access member-only sections, and use many member-only features such as customizing your profile, sending personal messages, and voting in polls. Registration is simple, fast, and completely free. Join our community! If you're already a member please log in to your account to access all of our features: |
| My new virtual cipher machine; A challenge for real cryptologists | |
|---|---|
| Tweet Topic Started: Jan 11 2015, 07:39 PM (1,085 Views) | |
| Innovationgame | Jan 11 2015, 07:39 PM Post #1 |
|
Member
![]() ![]() ![]() ![]()
|
I have constructed a virtual cipher machine using VBA in an Excel spreadsheet. The algorithm is based on that of a real machine which was in service fifty years ago. Below is a message encrypted using my virtual machine. It would be interesting to see if anyone can decrypt the the message. As a clue, I have used a simplified version of the real machine, so that there are only 2^49 possible combinations for the initial set up, but there are more scrambling options possible. If you are able to decrypt the message, please let me know the name of the virtual machine and what type of machine I used as the basis of my virtual machine. I will reveal clues periodically if the message remains unsolved. Here is the encrypted message 1001000 1100010 1111000 1111110 1110000 1110100 1110010 1101000 1010011 1010110 1011110 1010000 0100000 0011010 0000001 0100000 1110110 0110011 0110101 1010011 1101001 1100000 1000111 0010011 0010011 1011101 0110010 0011010 1000000 0100101 1110110 1110110 0110011 0010010 1111111 0101110 1000110 0000100 0001111 1000011 1100110 0011010 1001010 1100110 1110001 1111100 0101010 0001000 1111101 1101010 0010010 0011001 0011001 0001010 1000100 0011100 0000100 1110001 1110001 1111100 1111001 0110000 1111001 1110110 1010001 0010010 0010101 0001001 1011000 0011100 0000100 1111111 0110010 0110101 1011101 0110000 1111001 0100100 0010001 1010011 1011000 0111000 0010000 0110101 1000101 1111111 0110000 0110000 1011101 1100011 1000001 0100000 0001101 0010000 1000111 0111100 0010000 1100001 1000011 1100101 1111111 0110100 1011001 1111110 1000001 0100001 0000000 0011100 1010101 0101100 0001101 0100100 0000001 1101001 1101000 1110101 1000101 1111110 0000100 1100011 0001000 0011011 0010000 0100001 1011110 1101011 0001101 0101000 1101111 1111000 1000100 1111110 0001010 1100001 1001111 0000000 0001010 0101101 0001010 1100010 0001100 1101111 1101111 1101100 0001101 1111110 0001010 1101001 1001111 0101110 0100000 1011011 0110111 1011001 1001001 0101100 1000111 1010000 0110011 1010010 0101011 1101001 1000001 0100110 0110011 1011011 0111011 1000101 0001100 1100001 0001110 1011100 0101111 1010011 0100000 1111110 0010110 1100111 0101111 1001010 1110011 1001011 0010000 1111001 0010000 1000001 1101010 0010010 0111000 0110000 0111011 1011001 0000101 1001010 0100100 0001001 0000000 0010010 1110111 0100101 1101010 1110000 1100001 1100101 0110010 0000101 1000000 0001011 0000011 0001110 0001011 0010010 1100011 0101111 1111001 0100011 1111010 1100011 1110111 1000011 1000001 0011000 1001110 0011111 1000011 0010100 0101011 0101110 1110001 0101101 1111010 1100011 1111101 1011000 0001110 0000101 1000101 0011011 0010111 1011101 0011001 1000010 1010011 0001100 1001000 0110111 0101010 1111000 0110001 1110011 1101101 1101000 1110100 1000101 0001110 1010100 0011101 0011001 0011010 0001101 1100101 1101101 0111011 1110000 1101001 1111011 1100011 0011100 1001101 1001111 0011000 0001000 0001111 1000011 1101100 0111111 0100000 1111100 1111101 1101100 0100110 0001000 0011111 1001101 0010101 0010001 0000101 1010010 1101001 1101101 0110100 0110101 1100111 1100000 0111010 0000000 0001110 1011000 1010000 0010100 1001100 0011010 1100001 1101011 0101010 0111111 0110100 0101001 1110100 0000110 0000010 1000100 1011010 1000111 0001001 0010101 1101000 1100110 1100100 0111011 1100111 1101111 1110000 0011111 1001010 1000100 1001001 0000110 0011101 0010101 1110011 0110011 1100100 0111010 1100011 1111000 1111011 1011111 0010011 0010101 1001111 0000010 0010100 0010010 0101011 1101010 0110101 0101100 1100011 1100110 1100001 0000101 1001010 0010101 1100000 0000010 0001000 0000010 1101101 0101111 1100110 0010100 1100111 1111010 0100010 0011010 1001110 0010101 0110100 0000110 0010100 1001101 1101110 0100110 1110000 1000110 0100110 1010111 0100010 0011000 1000011 0011110 0110010 1010100 0101110 0000010 1111011 0101100 1110011 1000010 0110101 1000000 1111011 1011011 1011000 0011011 0100011 1000001 1100000 0001011 0101001 0110111 1111111 1010110 0100010 0000101 1101111 0001001 1000110 0001010 0110111 1001110 1101100 0011011 1110000 1101010 0101010 1010101 0111011 0011000 0111011 0000010 0001011 1011000 0110000 1010111 1100001 0011011 1110001 1101110 0111101 1011110 1111011 1000001 1111000 0010000 0011100 1001110 1110000 1011011 1100001 0101100 1111000 1111001 0111100 0010101 1111011 0000000 1011110 0011101 1011001 1001111 1111010 0010110 1100101 1111110 1110110 0111100 0110110 1011010 1110010 0001100 0011000 0010000 1011001 1000100 0111111 0011100 1101111 1111101 1100011 1110111 1100100 0011111 1011101 0100011 0101011 0101010 0100100 1000100 1110000 0101101 1000110 1011001 1001011 1010000 0100001 0010100 0001101 0101001 0110111 1101011 0011101 1010100 1100110 1111111 1001000 1001110 1001011 1111110 0111011 0000010 0011010 1100100 1101110 0101010 1011110 1011101 1101011 1101100 0000001 1001110 1001000 0110111 0101001 1001011 0001111 1101110 0101010 0101101 0010111 1011100 0111000 1100110 0000000 1001101 0001101 1111000 0110010 1010100 0011111 0100000 0111000 1111101 0001000 1010111 0100110 0111111 1000011 1011001 0001110 1101101 1110111 1001010 1011010 0110111 0101101 1101011 0011111 0000100 1101010 0111011 1011001 1001001 1001011 1111110 0100100 0001100 1011110 0101110 1101001 0101001 0011111 1010111 1100101 0111101 0001110 0001111 1011100 1110001 0110100 0010001 1010100 1100001 1100001 0101111 1010001 1011101 1111111 0110111 0001101 0010100 1001011 0111000 0110011 0011000 0010111 1101100 0110100 0111000 1010000 1011010 1111110 1100011 1001100 1011111 1011101 0101001 1111010 0001010 0001100 1101100 0111100 0110101 1001000 0010100 1101101 1101001 1001100 1011010 1000111 0100111 1111001 1001101 0000101 0101001 0101110 0110011 1000010 0001011 0111110 0100101 1011101 1000001 0010011 0101100 1111110 1010011 1000111 0111000 0110011 1100000 0001100 0011111 0111101 0100011 0011000 1000000 0011001 1100001 1111101 1010010 1001111 1101011 1101110 0111001 1000001 0110100 0100110 1101111 0001010 0000010 1001010 0101110 0010100 1010011 0011100 1101111 1100110 1101010 1001111 0110100 0110001 1110101 0011011 1001011 0011101 0100110 1000111 1010100 1010101 1101000 0100011 1110100 1000000 0110011 1110100 0100111 0001101 1000100 0011101 0110011 1000111 0010001 1010101 0101101 0101011 1101000 1000111 0110111 1100100 0100001 0000011 0001011 1001000 0001011 1010110 0001010 1000010 1101011 1101110 0111011 1111111 0110011 1111000 1100010 0011110 0011101 1011110 0001100 0010011 0011001 1000010 1101101 1111000 0101000 1101001 1111101 0111001 0100000 0000100 0001100 0001000 0001010 0010010 1011101 1000101 0100100 1101110 1101001 1111001 1110111 0111001 1100101 1001011 0000000 1001001 0111000 0100100 1111010 0101100 0000010 0101100 1101001 1001111 1001101 0001110 1000100 0100010 1011001 0011001 0111111 0101000 1111100 1100100 1000011 0110111 1111101 0011111 1000100 0010011 0010011 0100110 1000101 1011101 1111100 0100101 1100000 1110110 0000110 0101001 0111000 0001000 1010001 0000101 0000100 1110101 0000111 0011000 0101000 0011000 1110001 0100100 0010100 1101011 1101011 1000111 0111000 0000100 1010111 1110001 0011000 1001011 0100110 0011000 1100111 0111111 0010000 1101010 0101010 1000101 1101100 0000010 1001101 0110000 0001000 1010011 1100101 0001111 1101010 0101100 1000010 1101001 0110000 0010001 1101010 0011000 0001100 0110001 0000001 1011001 1110111 0011110 0111000 1111110 1010100 1100110 0110000 0000100 1101010 1011101 0001100 1111010 |
|
Regards Innovationgame | |
![]() |
|
| mosher | Jan 14 2015, 07:56 PM Post #2 |
|
Super member
![]() ![]() ![]() ![]() ![]() ![]()
|
Your system may have merit, but you should be sure to read this following page from the Crypto Forum first. In short, you should divulge the generic underlying algorithm to the readers of this forum, depending on the message's private key to keep your ciphertext undecipherable. |
![]() |
|
| mosher | Jan 15 2015, 05:53 PM Post #3 |
|
Super member
![]() ![]() ![]() ![]() ![]() ![]()
|
BTW, you can make it easier on a reader's eyes to convert your binary characters to hex: 48 62 78 7E 70 74 72 68 53 56 5E 50 20 1A 01 20 76 33 35 53 69 60 47 13 13 5D 32 1A 40 25 76 76 33 12 7F 2E 46 04 0F 43 66 1A 4A 66 71 7C 2A 08 7D 6A 12 19 19 0A 44 1C 04 71 71 7C 79 30 79 76 51 12 15 09 58 1C 04 7F 32 35 5D 30 79 24 11 53 58 38 10 35 45 7F 30 30 5D 63 41 20 0D 10 47 3C 10 61 43 65 7F 34 59 7E 41 21 00 1C 55 2C 0D 24 01 69 68 75 45 7E 04 63 08 1B 10 21 5E 6B 0D 28 6F 78 44 7E 0A 61 4F 00 0A 2D 0A 62 0C 6F 6F 6C 0D 7E 0A 69 4F 2E 20 5B 37 59 49 2C 47 50 33 52 2B 69 41 26 33 5B 3B 45 0C 61 0E 5C 2F 53 20 7E 16 67 2F 4A 73 4B 10 79 10 41 6A 12 38 30 3B 59 05 4A 24 09 00 12 77 25 6A 70 61 65 32 05 40 0B 03 0E 0B 12 63 2F 79 23 7A 63 77 43 41 18 4E 1F 43 14 2B 2E 71 2D 7A 63 7D 58 0E 05 45 1B 17 5D 19 42 53 0C 48 37 2A 78 31 73 6D 68 74 45 0E 54 1D 19 1A 0D 65 6D 3B 70 69 7B 63 1C 4D 4F 18 08 0F 43 6C 3F 20 7C 7D 6C 26 08 1F 4D 15 11 05 52 69 6D 34 35 67 60 3A 00 0E 58 50 14 4C 1A 61 6B 2A 3F 34 29 74 06 02 44 5A 47 09 15 68 66 64 3B 67 6F 70 1F 4A 44 49 06 1D 15 73 33 64 3A 63 78 7B 5F 13 15 4F 02 14 12 2B 6A 35 2C 63 66 61 05 4A 15 60 02 08 02 6D 2F 66 14 67 7A 22 1A 4E 15 34 06 14 4D 6E 26 70 46 26 57 22 18 43 1E 32 54 2E 02 7B 2C 73 42 35 40 7B 5B 58 1B 23 41 60 0B 29 37 7F 56 22 05 6F 09 46 0A 37 4E 6C 1B 70 6A 2A 55 3B 18 3B 02 0B 58 30 57 61 1B 71 6E 3D 5E 7B 41 78 10 1C 4E 70 5B 61 2C 78 79 3C 15 7B 00 5E 1D 59 4F 7A 16 65 7E 76 3C 36 5A 72 0C 18 10 59 44 3F 1C 6F 7D 63 77 64 1F 5D 23 2B 2A 24 44 70 2D 46 59 4B 50 21 14 0D 29 37 6B 1D 54 66 7F 48 4E 4B 7E 3B 02 1A 64 6E 2A 5E 5D 6B 6C 01 4E 48 37 29 4B 0F 6E 2A 2D 17 5C 38 66 00 4D 0D 78 32 54 1F 20 38 7D 08 57 26 3F 43 59 0E 6D 77 4A 5A 37 2D 6B 1F 04 6A 3B 59 49 4B 7E 24 0C 5E 2E 69 29 1F 57 65 3D 0E 0F 5C 71 34 11 54 61 61 2F 51 5D 7F 37 0D 14 4B 38 33 18 17 6C 34 38 50 5A 7E 63 4C 5F 5D 29 7A 0A 0C 6C 3C 35 48 14 6D 69 4C 5A 47 27 79 4D 05 29 2E 33 42 0B 3E 25 5D 41 13 2C 7E 53 47 38 33 60 0C 1F 3D 23 18 40 19 61 7D 52 4F 6B 6E 39 41 34 26 6F 0A 02 4A 2E 14 53 1C 6F 66 6A 4F 34 31 75 1B 4B 1D 26 47 54 55 68 23 74 40 33 74 27 0D 44 1D 33 47 11 55 2D 2B 68 47 37 64 21 03 0B 48 0B 56 0A 42 6B 6E 3B 7F 33 78 62 1E 1D 5E 0C 13 19 42 6D 78 28 69 7D 39 20 04 0C 08 0A 12 5D 45 24 6E 69 79 77 39 65 4B 00 49 38 24 7A 2C 02 2C 69 4F 4D 0E 44 22 59 19 3F 28 7C 64 43 37 7D 1F 44 13 13 26 45 5D 7C 25 60 76 06 29 38 08 51 05 04 75 07 18 28 18 71 24 14 6B 6B 47 38 04 57 71 18 4B 26 18 67 3F 10 6A 2A 45 6C 02 4D 30 08 53 65 0F 6A 2C 42 69 30 11 6A 18 0C 31 01 59 77 1E 38 7E 54 66 30 04 6A 5D 0C 7A |
![]() |
|
| mosher | Jan 16 2015, 03:03 AM Post #4 |
|
Super member
![]() ![]() ![]() ![]() ![]() ![]()
|
Hmm, on reconsideration, your original post seems to indicate a cipher machine that used a 7-bit ASCII representation, rather than 5-bit Baudot or 8-bit ASCII.. I'll need to check which historical cipher machine fits the bill .
Edited by mosher, Jan 16 2015, 03:06 AM.
|
![]() |
|
| Innovationgame | Jan 26 2015, 07:06 AM Post #5 |
|
Member
![]() ![]() ![]() ![]()
|
Well spotted Mosher! It is indeed a 7-bit ASCII code. The original machine used a five bit code, but this does not allow lower case and other characters. This message uses a 7-character shift register and, if you would like a crib, the plain text includes the word Lanchester several times. The algorithm is very simple. A shift register with up to 99 characters is filled via a pseudo-random number generator and the message is then encrypted one character at a time by XOR-ing the plain text with the first character in the shift register. The shift register is then shifted down one place and the enciphered character added to the top of the shift register. In order to decipher the message, the receiver has to know the start settings for the shift register. The shift register is an array variable rather than the set of discrete OC71 Eccles-Jordans used in the original. From the above, you should be able to work out the name of original machine and quite a lot of the contents of the plain text without actually deciphering the message. Best of luck Edited by Innovationgame, Jan 26 2015, 08:29 AM.
|
|
Regards Innovationgame | |
![]() |
|
| Innovationgame | Jan 28 2015, 07:13 AM Post #6 |
|
Member
![]() ![]() ![]() ![]()
|
I have just realised that the simplified algorithm that I have used means that there is rather a trivial solution to the problem. Have you spotted it yet? In the meantime, I will rewrite the algorithm to produce a proper challenge. |
|
Regards Innovationgame | |
![]() |
|
| mosher | Jan 28 2015, 12:39 PM Post #7 |
|
Super member
![]() ![]() ![]() ![]() ![]() ![]()
|
I haven't dived into this, but your description of the algorithm:
If my understanding of shifting down one place, and adding to the top of the shift register is correct, the algorithm is essentially a ciphertext autokey with an initial key of one characters. If so, it should not be difficult to decipher the ciphertext above. Edited by mosher, Jan 28 2015, 12:41 PM.
|
![]() |
|
| Innovationgame | Jan 28 2015, 04:22 PM Post #8 |
|
Member
![]() ![]() ![]() ![]()
|
It's all very embarrassing! You don't even need to worry about deciphering the message. You can practically read off the plaintext, given the information that I supplied in my second post. That's what comes of taking short cuts when your memory is not as good as it used to be. It is fifty years since I saw the real machine! But I'll make a proper challenge as soon as I have written the code. |
|
Regards Innovationgame | |
![]() |
|
| Innovationgame | Jan 30 2015, 10:18 AM Post #9 |
|
Member
![]() ![]() ![]() ![]()
|
I hope you all managed to solve the challenge, which turned out to be trivial owing to what was effectively a Cilli on my part. Because the shift register length for the encryption was chosen to be 7, all that was needed was to XOR the 1st enciphered character with the 8th, the 2nd with the 9th, etc… to decrypt all but the first 7 characters. Those could almost certainly have been discovered by an obvious crib. Of course, if you did not know the length of the shift register, you could have used brute force by assuming it was 2 then 3 then 4, etc…until plain text was discovered. If the maximum length of the shift register was 256, then a maximum of 255 iterations would be needed. This would not work if the message length were less that the shift register length. It would also not work if the original message had already been encrypted. However, if it had been encrypted on the same machine with different message settings, it would be possible to use brute force to reveal 255 encrypted messages and then brute force again on each encryption to reveal the plaintext. This could require a maximum of 65,025 iterations. I apologise for the poor challenge and I have now constructed a new algorithm. I will set a new challenge based on the new one. |
|
Regards Innovationgame | |
![]() |
|
| Ribeiro Alvo | Jan 30 2015, 11:47 AM Post #10 |
|
/\ |_ \/ ( )
![]() ![]() ![]() ![]() ![]()
|
Never mind , do not waste your time with this. Even if it is good, at first glance , it seems to me that does not bring anything new . |
![]() |
|
| Innovationgame | Jan 31 2015, 12:53 PM Post #11 |
|
Member
![]() ![]() ![]() ![]()
|
I have closed this challenge and refer you to my new challenge entitled "Lanchester" |
|
Regards Innovationgame | |
![]() |
|
| 1 user reading this topic (1 Guest and 0 Anonymous) | |
| « Previous Topic · Challenges · Next Topic » |





![]](http://z2.ifrm.com/static/1/pip_r.png)



.
1:02 AM Jul 11