12

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?

yyyyyyy
  • 12,081
  • 4
  • 47
  • 68
SP5RFD
  • 223
  • 1
  • 6
  • 1
    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 Answers1

16

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.

yyyyyyy
  • 12,081
  • 4
  • 47
  • 68
cygnusv
  • 4,952
  • 1
  • 22
  • 47