My name is Ram Rachum, and I'm a Python software developer based in Israel.

This is my personal blog. I write about technology, Python, programming and a bunch of other things.

This is my personal blog. I write about technology, Python, programming and a bunch of other things.

Text

A newer, interactive version of this challenge is here.

There is a wide consensus among security experts that when choosing an encryption algorithm, it’s much better to choose a well-known public algorithm rather than a home-brew one. I completely agree with this approach.

However, I am curious about how easy it is to break a weak, home-brew encryption. When you’re faced with seemingly-random piece of data, and only told that it is encrypted with no clue as to how the encryption algorithm works, how would you even know where to start at decrypting it?

To shed some light on this mystery, I’ve decided to do a little experiment here on my blog.

I’ve encrypted a piece of information using a home-brew algorithm that I came up with and implemented in a few minutes. I won’t say much about the algorithm (since the point of this exercise is breaking the algorithm without knowing what it does) but I will say that it’s the result of several steps, each of which is easily breakable.

The data is posted below in hex. I’m very curious to see whether anyone would be successful at decrypting it, and even more curious as to how that was done.

**Edit: **Just to make it 100% clear: I will *never* use something like this for any real encryption need. This is just a puzzle. Never use anything like this to encrypt something even remotely valuable. I do not condone using home-brew encryption algorithms.

Without further ado, the encrypted data:

```
5A9E938B9A9BA0A0D5B9DB42EDD9A0F4
AFAF2780C9D941ED0BE6C8E6DD0DD082
05845029B203AE4A2C4169BFAEB6FDD9
AD461C685A700427C0E440EDE287FD31
7710ACA70B5C059D3B3EA6F58880EB70
4132D80D9F596BB1DC5922D3331BEFED
7D4C9146091F8093109EF21DE22B387C
10ADA38DF91FFBE4305B68B87A563447
AA97364600CC682F2328E8733BBA252E
3C7F93A1805B6593834F647B5BB34356
061B30DBE73734A62426816D49BB185D
C8C6D5D5FF87D5C6FFDD7DE4651FAB43
1F61AD0D4E5E5AD211FEB1D255E6D2BF
906D963C04DCC7BF2914263EF4866BFB
2A99CB704A568C0E23D66215C922F581
8CC31947C57B9F519161C3DBBA19C4AE
F18EE25281999E4C867B69838870811F
307BB3368D884E959EABC97092DD6975
232B8642424B66B67A326F6277231D98
18CBB796693D28BD92BE26956241589B
BC28C98C903D9D6AB976FB55D57B0711
681232107038820F0AA96BD7B11ED190
1897FA07905304EA128355A3BE409379
C2484D40DB45F3A5C535AF736F492B92
63E46B078D3B74092656E3D1BEC2FCC4
46895AAE93FE7CA6D281C84E7AEAEDE4
98F707F9829324AD9C3E7C9A4017B710
CC6DDBB048699E1346AADD538853F037
7B1E139212A1055F331CAF1027ED4955
3F0C2DA2CF2C1D72173B77287893146D
93BEA605DD46B6A3BD77A95F1FF66A56
2B8A2D11804907DAFA6F64DAFB1F81A1
D70187301CE1DA816C11D5E87FBED853
9788333E1426FCF6926236B42C72A6E0
39FBB728C37633A2AD4088D42E13E005
F544D0ACE4ED0AF8EDC82D0F0D5CBE07
93096E3AB1484A2E1622077E458CE9B0
D3BB4E128DB3112706E1E55EC85D41DC
164C8177D296BCCB87FF18295E54F0A7
3A09ED54D9DC0406D97B4E2529BFB3A4
22484AE361AC1970818219409B464A9B
2BD4269F4B5901A389DF30CF7A1D6CF5
8BB39C6BA76B0B0EAEF64F516C15E166
D9BE6A256985601FBD1B2FC7FA0DDFF6
7D4989B264DE32A13B6A9385E0581D90
DB10B0C71FE99C9121B0AEC58303C61B
B4F74F0E35FB4D1AE38836630C368A92
C1C4E5ACBB4B1B390246503A174ACFEA
08674C50BA7347558BC4F967BF154EDE
67ECEABEF97CE930F2539906F8A97B8C
3DEBE7C0AC8EFEDC9AC25AE1FDA9C941
3B16DECC5EDB562CE7AC386AB25D9662
275FE07DC8F59468C3C918FEC8BC6830
A3DE122885D834104F71707458D91917
6105614B1156884C5CD9D1BBCC1F25D2
6EE91F048FB9F9D3B9504B85D25CB317
36A5030C8EFD2EDA90C06FFA0AA44966
1B6259678FADFE8C27820398E867A8BA
45438A4802828ACFA8C0B6A89C32ED60
8286FD1125E99DD4B40AFFC3306E9BB9
242D7F4E026FA448A00D8D3F2E948D09
```

All content in this website is copyright © 1986-2011 Ram Rachum.

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License, with attribution to "Ram Rachum at ram.rachum.com" including link to ram.rachum.com.

To view a copy of this license, visit: http://creativecommons.org/licenses/by-sa/3.0/

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License, with attribution to "Ram Rachum at ram.rachum.com" including link to ram.rachum.com.

To view a copy of this license, visit: http://creativecommons.org/licenses/by-sa/3.0/