Take the 2-minute tour ×
Information Security Stack Exchange is a question and answer site for Information security professionals. It's 100% free, no registration required.

I'm trying to learn about encryption and decryption methods when I faced this string:


MD5 is 16-byte string, so anyone know what type of encryption is this and why there is "{MD5}" ??

share|improve this question
It shows up surprisingly often when you do a Google search for it. –  Ladadadada Aug 4 '13 at 22:43
@Ladadadada That's a little bit disappointing and scary, I must say. –  Adnan Aug 4 '13 at 22:49
Hashing and encryption are very different. Hashing takes input text gives it to a hash function that does a bunch of calculations to make an output of fixed length. Hashing is one-way and for crypto should not be reversible. Encryption is different--its recoverable if you have the keys. You give the input (called the plaintext) and a random-looking encryption key to an encryption function to calculate a ciphertext. From the ciphertext, you can recover the plaintext if you have the decryption key. With hashing, you can only keep trying every possible input until you find a match. –  dr jimbob Aug 5 '13 at 4:56
add comment

closed as off-topic by Xander, TildalWave, Adnan, NULLZ, Scott Pack Aug 5 '13 at 13:15

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to break the security of a specific system for you are off-topic unless they demonstrate an understanding of the concepts involved and clearly identify a specific problem." – Xander, TildalWave, Adnan, NULLZ, Scott Pack
If this question can be reworded to fit the rules in the help center, please edit the question.

1 Answer

up vote 11 down vote accepted

It was a fun exercise for me, so +1 for the question.

The {MD5} part indicates that the string after it is an MD5 hash. As you can see by the trailing ==, that means the string has been encoded with Base64. By Base64-decoding it, you get the following in binary

00100101 11111001 11100111 10010100 00110010 00111011 01000101 00111000 10000101 11110101 00011000 00011111 00011011 01100010 01001101 00001011

By converting that binary to HEX, you get:

25 f9 e7 94 32 3b 45 38 85 f5 18 1f 1b 62 4d 0b

Remove the spaces and you get


Finally run it through an MD5 rainbow table service (I used md5rainbow.com) and you get the original text:

share|improve this answer
Why go through binary at all? Under Linux or *BSD: echo JfnnlDI7RTiF9RgfG2JNCw== | base64 -d | hexdump -e '16/1 "%02x" "\n"' (or … | od -An -tx1 | tr -d ' '). Then Google. –  Gilles Aug 5 '13 at 7:53
@Gilles We all know that there are tens of ways (1337 or non-1337) to achieve this. If you look at the question again, you'd see why I went step by step and explained the output and input of each step. I could have simply written 123456789 as a comment. –  Adnan Aug 5 '13 at 7:59
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.