# Why are the outputs of the md5sum tool and Crypto++'s MD5 different?

Could you please tell me what is the difference of coreutils' md5sum and sha*sum tools (sha1sum, sha224sum, etc.) compared to Crypto++'s digest functions?

I've written a piece of code using Crypto++ hash functions but the result is different from the corresponding Unix tools'.

For example if I write in command line:

 echo test123 | md5sum


I get:

4a251a2ef9bbf4ccc35f97aba2c9cbda


but the Crypto++ MD5 function results with:

cc03e747a6afbbcbf8be7668acfebee5


Similar things happens when I use another digest functions (as mentioned earlier).

Both Unix and Crypto++ manuals says it simply calculates digest, but says nothing about output format.

I can see both have the same length, both seem to be in hexadecimal form (0-f) and moreover when I type the hashes into Google, in both cases it says that it is an MD5 hash of test123.

Do you have any ideas about it?

• Try echo -n test123 | md5sum. The echo command appends a newline unless used with the -n flag. – yyyyyyy Feb 25 '15 at 11:56

## 1 Answer

The echo command appends a new line at the end, by default. The -n option omits this character. Compare these two executions:

> echo -n "test123" | md5sum
cc03e747a6afbbcbf8be7668acfebee5

> echo "test123" | md5sum
4a251a2ef9bbf4ccc35f97aba2c9cbda


So the difference between the hash values is simply caused by the new line character.

• indeed, that's the case. So simple, that i feel ashamed of my question ;) – SP5RFD Feb 25 '15 at 12:10
• @crooveck Don't worry — I guess most people have discovered this trap some time... – yyyyyyy Feb 25 '15 at 12:26