Can You Guess The Hash Algorithm?

Many people think that if they implement a "super secret hash function", their password hashes will be more secure. This is a research attempt to try to disprove that.

How This Works

I have created "secret" algorithms. Ranging from trivial to quite difficult. You have all the data you need, except the algorithm itself (there is no secret key or anything).

For each algorithm, I have provided you with 4 password/salt combinations, and the resulting hashes.

Your Mission, Should You Choose To Accept It

Your mission is to try to deduce the algorithm used to produce the hash.

To prove that you have the correct algorithm, produce a new hash using the following credentials:

PasswordSalt
foobarbarbarbarbarbarbarbarbarbarba

Enter that hash into the "Hash guess" input field. If it is correct, the box will go green, and the result will be logged.

Results

The challenge is over. You can continue to try to guess the algorithms (the JS portion will work), but the results section will be shut down, as the research is concluded. The results below were frozen as soon as someone found all 15 hashes.

Number Of Correct AlgorithmsNumber Of People With At Least That Many Correct
1245
2103
366
436
528
622
714
811
910
109
117
126
134
144
151

Winners

There are 2 classes of "winners" in this result set. Due to a server-misconfiguration, all 15 algorithms were exposed, leading to the winner of all 15 being the first person to find that misconfiguration. And that person is:

Matthias Glaub - First found "misconfiguration" which allowed all 15 hashes to be verified.

The other class of "winners" are those who found 14 algorithms without "tricks". In no particular order:

Findings

As it turns out, Kerckhoff's Principle holds true. Every single one of the "secret" hash algorithms, some of which were quite odd, fell. Many hashes fell on the first day. Some took a week. But all fell in one way or another.

So next time someone tells you that you should "make it more secure by tweaking the algorithm so they don't know what to expect", show them this site.

Algorithm 1
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 2b5e3e2fae2b593be1e893969e1524ad
password saltsaltsaltsaltsaltsaltsaltsalt b4728716ee1a8de5fe3ce43646ff4973
apple pearpearpearpearpearpearpearpear 492e1a6f7f64f6b8e8a9552162636edf
apple orangeorangeorangeorangeorangeor 46dd3160118941ca6b8b041b76b10f70

Hint

If you can't get this one without a hint...

Algorithm 2
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 90f628bde8d89d21a3b8bb41524fade71624a123
password saltsaltsaltsaltsaltsaltsaltsalt 2e4fd1f0d9533ecfde2df2827db7f828d93a7d98
apple pearpearpearpearpearpearpearpear 10a4f14c6405d7aaede79941755d872c21df2af8
apple orangeorangeorangeorangeorangeor 0d4ee5820c24d360f23e61e5c9012594a27076a3

Hint

Combinations are required.

Algorithm 3
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 535ee2f3dfdb60d5bc5f76987ced05a7516fd7b9375a539d87e7a5feca7e146120a5463f087ec9a8
password saltsaltsaltsaltsaltsaltsaltsalt 7e2a6daed64f8aab57e9547e9ece7926adcdcba75d2e01eff54b4f73da0951b7ceaec0891df9322f
apple pearpearpearpearpearpearpearpear 111fea8925aa7013f0044b388b36b97ac308202e3489e6a0db7142faabb77ee115046b348d64d3fa
apple orangeorangeorangeorangeorangeor 2307bf6814a9295dd0147198ecc42a1680d7cd35967fbd7ee841a2bf1b67d0db94798224af667b41

Hint

You'll need to think in an alternate way to get this one.

Algorithm 4
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 b2cfd14889a6a26066c49f7484911cab
password saltsaltsaltsaltsaltsaltsaltsalt 8f9123f4c1561d550017dd807bc165f8
apple pearpearpearpearpearpearpearpear a2b5b23d1169ca30cd3ab4f5d408f02e
apple orangeorangeorangeorangeorangeor 9450d70573c819010cfeaa1c8c9200b7

Hint

There's something cryptic about what's going on here...

Algorithm 5
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 $2a$07$usesomesillystringforemUFsKduCdorWGPSNWMxzm/Z3Z8NpF6q
password saltsaltsaltsaltsaltsaltsaltsalt $2a$07$usesomesillystringforeplj1BpYrVN3saXpuuhVAZhM4pkKwvby
apple pearpearpearpearpearpearpearpear $2a$07$usesomesillystringfore4GMbp487k/vn80kyTmV9E1EH29RPnNO
apple orangeorangeorangeorangeorangeor $2a$07$usesomesillystringforeYHE0pveF5POmVJyE49bxCBLo8hboZ.C

Hint

You'll want to look to another answer for the key here...

Algorithm 6
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 ughE8Ev8uGFaUgY2cNEySvxngrbJzdmughE8Ev8uGFaUgY2cNEySvxngrbJzdm00
password saltsaltsaltsaltsaltsaltsaltsalt Oh9rCgsOi8IYqmtEm1s6duinLpzU3BbaOh9rCgsOi8IYqmtEm1s6duinLpzU3Bba
apple pearpearpearpearpearpearpearpear eruF4cZLPY53MB2dWzC27T21eNzyZ0KeruF4cZLPY53MB2dWzC27T21eNzyZ0K00
apple orangeorangeorangeorangeorangeor et9rn296WCCymrITy2fWknsf4rAIoBZWet9rn296WCCymrITy2fWknsf4rAIoBZW

Hint

Something is stripped from this hash (and something else is doubled)

Algorithm 7
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 p3nnqoo9p9038p127q74q62175222rp30rs11spn8s1q608o31s8791rs788n578
password saltsaltsaltsaltsaltsaltsaltsalt 22s27r9r71o71448088p73q141767os94pnrp3psnno0o469r1no4515pqq76927
apple pearpearpearpearpearpearpearpear 8snn890285nr70o4086qoos3433r400nr274601r8o36qrq73194875817nq1rqp
apple orangeorangeorangeorangeorangeor q86r26rq32973oo1o1ss2srqp73ns68s5q2076n24679o5pps2873nr63r9p3qpq

Hint

Look at the pattern of characters. I wonder if there's something to that...?

Algorithm 8
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 770e2462f54beb656730f4c93ab18b4f
password saltsaltsaltsaltsaltsaltsaltsalt fe09ad3a5ab1a35538df5214fc21d2aa
apple pearpearpearpearpearpearpearpear b137e75e44f26857a6ded9ce24cd0f41
apple orangeorangeorangeorangeorangeor bc92bb85a4b8f9c94039fc47304223c8

Hint

Google is your only hope... Or not. Either way, you'll have to get creative...

Algorithm 9
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 92efeff958c88194ad0b983eed21ce90
password saltsaltsaltsaltsaltsaltsaltsalt 92efeff958c88194ad0b983eed21ce90
apple pearpearpearpearpearpearpearpear 65f9d5a8f985f5413175d97e9cc51891
apple orangeorangeorangeorangeorangeor 65f9d5a8f985f5413175d97e9cc51891

Hint

You'll have to combine algorithms in the right order for this one...

Algorithm 10
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 ec9a444c55a2377232505df2ea9491136ddafa478905076abd741922e6d3e71e
password saltsaltsaltsaltsaltsaltsaltsalt 16f0dc6bd83699efa2d1c1e7865a5dab1838a2cbda0188f2354c9cde9b9ee129
apple pearpearpearpearpearpearpearpear 8e5e856bd5eca66fa45b935e0d3e63226b071b738d64e831484c890e35ef9b4c
apple orangeorangeorangeorangeorangeor e74d2ed85db1c2b1ad1ed9cd7e79548861dfaa03c5571cfc846c6b0f54da8900

Hint

HASH ALL THE THINGS!!!

Algorithm 11
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 3294527883
password saltsaltsaltsaltsaltsaltsaltsalt 3796677028
apple pearpearpearpearpearpearpearpear 1514252925
apple orangeorangeorangeorangeorangeor 3083570116

Hint

Think about the 'other' definition of 'hash'...

Algorithm 12
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 5f4dcc3b5aa765d61d8327deb882cf995baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
password saltsaltsaltsaltsaltsaltsaltsalt 5f4dcc3b5aa765d61d8327deb882cf995baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
apple pearpearpearpearpearpearpearpear 1f3870be274f6c49b3e31a0c6728957fd0be2dc421be4fcd0172e5afceea3970e2f3d940
apple orangeorangeorangeorangeorangeor 1f3870be274f6c49b3e31a0c6728957fd0be2dc421be4fcd0172e5afceea3970e2f3d940

Hint

If you need a hint for this one...

Algorithm 13
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 cnffjbeq
password saltsaltsaltsaltsaltsaltsaltsalt cnffjbeq
apple pearpearpearpearpearpearpearpear nccyr
apple orangeorangeorangeorangeorangeor nccyr

Hint

You'll need to talk to an ancient Roman for this one...

Algorithm 14
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 110310171209150c
password saltsaltsaltsaltsaltsaltsaltsalt 03001f07040e1e10
apple pearpearpearpearpearpearpearpear 1115111e15
apple orangeorangeorangeorangeorangeor 0e02110202

Hint

Cryptographers should get this one with no problem...

Algorithm 15
Password Salt Hash
password abcdefghijklmnopqrstuvwxyz012345 33643869386b396e6a6f3d6e424742727643784c4e49504e527f4c514f528084
password saltsaltsaltsaltsaltsaltsaltsalt 63363a363d3d383e6e6f3c6d45727445777746777a4a4a4e4d50818251575653
apple pearpearpearpearpearpearpearpear 353b356936673d6e4070414073447148764a744d4a4b49494f4c514f53838386
apple orangeorangeorangeorangeorangeor 3538676838373d383a3b4345413f727147744b76454a487a50507d4d4d845650

Hint

There's something shifty going on here...

Stats

You:0 / 15
Best:0 / 15
Average:0 / 15
Number Of Users:1

FAQ

How Are You Confirming?

We are doing a double confirm on the hash. First, we generate the hash (server side, sorry), then we hash it with a public key using sha256 (which is available to JS in the source). Then, we generate a hash with a private key that doesn't leave the server. When you enter a guess, the browser hashes the guess with the public key (seriously, just read the source), and if it matches, considers you to have found the hash. Then, the server re-verifies with the secret key. If both match, it's considered a valid guess and the result is saved.

What are you storing with the results?

Nothing. I generate a unique token which is stored as a cookie for each user. This does nothing but allows me to de-duplicate your submissions. All that's actually saved is a flag indicating which hashes you've successfully found. Nothing else.

Why bother?

Why not?

I Finished!!!

Awesome!!! Send me an email (me - at - ircmaxell - dot - com) with your id (sid in the cookie), and I'll immortalize you on the page forever (or until I decide to take it down).

Where are the answers?!?!?1

They are not here. Perhaps I will post them one day. Perhaps I may blog about them. But not today :-)

Can I have a hint?

Sure. Why not!

But seriously, why?

If you *must* know, click .

nerd sniping