Below is the hash :
c31843b739e61ec7bf5f63da93d97d0321f42f0304750c41ae88a3b04727ba21f5c7061e7517101f3b8f2fa53d3a32960c03e3b78112619b2674802429d831fcdb38fdff909bdcb6a2da09a462e35671c310e4954d1578a0194cf86b6e4b2550a58893d756c0d557451c487546b7a908377d5cc436daa6bd0cebbd8a2593db7ccc536aab131d8ca8c4c5daf505190d6e61a0c80b65d337e839c4c77c5a7f90daaf5aed8aff7d43876194d64a289cf42aedd977889120178500f4ef48aa3cdae78b1a4383d8f4f136f02c1d2d122f8819d8a2c66de0240ce2416ba43b0346de0450684f874fdb5d34b698e8a93ee45e15e8994c361f387a9fe94107b2d11f743cc34843d9031a7a0c01976ecf1f88056a6fa1b40744a88a37ee95fc66058370def144c686d692f012b07f56c497955a8fc40a51652240928e3c899aca8791a8e5f345f65745cfbec16f0446bafaa3e0593ab2d69e02b2562029178779e835cc933c99d289cc96b51f63a0c8abb01bc9df2659480fbb2f17f3b0817c807d222abbd58d1c60037ec5e35c06f2080a3b593928be4af515573024bdf5603f9696de81af8b065f6e2976a2efaa097d6613431c162c7acb00f7892acb3a2ffef15701bd
First, A series of string prefixes is generated with lengths increasing by 2. For example, if our secret word was "abcxy@hoho.com", we would generate:
ab abcx abcxy@ abcxy@ho ... ...... abcxy@hoho.com
Then, for every prefix s, following hash H is computed: md5(md5(e) + s + md5(s)) [where + is the string concatenation operator and e is "xxxxx@hehu.xxx.edu"].
Finally, all hash strings H are concatenated to form the long hash above....
For example, for abcxy@hoho.com, - the hash would be computed as
md5(md5('xxxxx@hehu.xxx.edu') + 'ab' + md5('ab')) +
md5(md5('xxxxx@hehu.xxx.edu') + 'abcx' + md5('abcx')) +
md5(md5('xxxxx@hehu.xxx.edu') + 'abcxy@' + md5('abcxy@')) +
...
For the sake of simplicity, you can assume that secret word only contains alphanumeric characters and these 4 characters: _ . @ +
and using e= xxxxx@hehu.xxx.edu, the hash is generated.
and we have to find out that secret word (from the hash).
These are the details I have researched:
Hash from MD5 is always 128 bits/16 bytes/32 ascii characters long
Collision Attack
Birthday Attack
Any Hidden paterns in the given hash
I am looking for a direction here. The given hash is exactly 896 letters long. Any ideas or redirects are much appreciated. Thanks.
The naive solution is:
- Anonymous June 11, 2014first split the long hash string into 32 chars blocks.
Then for each two chars combination "xy", calculate MD5(MD5(e)+'xy'+MD5('xy')) and match to the first block, there will be 30*30=900 combinations, this will get the first 2 chars in secret word.
Continue to get other parts. Time complexity will be 900*n/2