Below is the hash :
First, A series of string prefixes is generated with lengths increasing by 2. For example, if our secret word was "email@example.com", we would generate:
ab abcx abcxy@ abcxy@ho ... ...... firstname.lastname@example.org
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 "email@example.com"].
Finally, all hash strings H are concatenated to form the long hash above....
For example, for firstname.lastname@example.org, - the hash would be computed as
md5(md5('email@example.com') + 'ab' + md5('ab')) +
md5(md5('firstname.lastname@example.org') + 'abcx' + md5('abcx')) +
md5(md5('email@example.com') + '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= firstname.lastname@example.org, 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
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, 2014
first 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