≡ Menu

Linux / Unix: Generate A MD5 String

I need to generate a md5 hash for given string. It will be used by shell script to generate keys for remote web service or cryptographic application. How do I generate a md5 hash based on any input string under Linux or Unix like operating systems?

You can use md5sum command to compute and check MD5 message digest. This is a default tool on most modern Linux distributions. It generate a md5 hash for given string or words or filenames.

Create a md5 string using md5sum command

Use the following syntax:

echo -n "Your-String-Here" | md5sum

In this example create a md5 hash for wpblog string that can be used by memcached server

 echo -n "wpblog" | md5sum

Sample outputs:

6afedb7a8348eb4ebdbe0c77ef92db4c -

You can store the same in a bash shell variable called hash as follows:

md5="set-string-here"
hash="$(echo -n "$md5" | md5sum )"
echo "$hash"
Recommended readings
Share this tutorial on:

{ 8 comments… add one }
  • anton bors June 6, 2012, 8:07 am

    Reading from standard input:
    $ md5sum –

    a little script:

    #!/bin/bash
    echo $1
    echo $1 | md5sum

    $ ./md5 hallo
    hallo
    aee97cb3ad288ef0add6c6b5b5fae48a –

    The “-” declares, that this message comes from standard input
    greets

    • AtesComp February 21, 2014, 1:45 am

      Beware this script! You should use the “-n” option for echo as shown in the main article. Otherwise, a newline is appended to the output of the echo command and your hash will not be as advertised (unless you really want the newline).

      #!/bin/bash
      echo $1
      echo -n $1 | md5sum

      $ ./md5 hallo
      hallo
      598d4c200461b81522a3328565c25f7c –

      Not “aee97cb3ad288ef0add6c6b5b5fae48a” as shown above.

      • Dorell James Galang February 17, 2016, 4:03 am

        If your hash contains a “–” at the end. Well, seriously this is not correct. I suggest you use this command instead to get rid of that character.

        echo -n "samplestring" | md5sum | cut -d"-" -f1 -

  • Roy Bellingan June 12, 2012, 9:32 am

    Remember that md5 should only used for file hash now, in recent days linked_in had a major password leakage for using md5…
    md5 and password leaked.

    • Drew H December 13, 2012, 3:21 am

      You’re an idiot mate

  • Guy Merritt August 23, 2013, 5:50 pm

    I love this site – it’s got more simple, helpful tips for *Nix amateurs (like me!) than I’ve ever seen elsewhere. But, for the life of me, I can’t find a site search anywhere. I was looking for this page, because I’d forgotten the syntax to generate an encrypted password. What’s up with no site search…? If I wanted to search Google, I’d search Google. Anyway, thanks for all of the help. Great site.

  • Nick Gar July 12, 2016, 3:24 am

    Unfortunately, this command creates completely wrong MD5 hashes under certain circumstances, for example if the string to be hashed contains both uppercase and lowercase letters or symbols.

    Let’s take the string “8FdBd35E” as an example. Its correct MD5 hash is
    2a6b2d4c5fbd87fd896177a8fd12d4d1

    and PHP indeed creates the correct MD5 hash:
    root@corp6 [~]# php -r “echo md5(‘8FdBd35E’);” | xargs echo
    2a6b2d4c5fbd87fd896177a8fd12d4d1

    However, the “md5sum” shell command creates a completely different MD5 hash:

    root@corp6 [~]# echo “8FdBd35E” | md5sum
    bf84cb9630c7748d0f337c98c2644051 –

    Also, checked it with thousands other strings and md5sum creates an incorrect MD5 hash, so the command is not to be trusted.

Leave a Comment


   Tagged with: , , , , , , , , , , , ,