≡ 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:

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

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:

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

    Reading from standard input:
    $ md5sum –

    a little script:

    echo $1
    echo $1 | md5sum

    $ ./md5 hallo
    aee97cb3ad288ef0add6c6b5b5fae48a –

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

    • 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).

      echo $1
      echo -n $1 | md5sum

      $ ./md5 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

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

    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.

  • Erich October 21, 2016, 10:03 am

    That’s because ‘echo’ appends a newline. I tried your command with the ‘-n’ option and it worked as expected.

  • Pedro December 19, 2016, 11:28 pm


    hash_user="$(echo -n "$username" | md5sum )"
    hash_pass="$(echo -n "$password" | md5sum )"

    así me funciono gracias a tu post.
    hash_username=$(echo $hash_user | sed 's/ //g' | sed 's/-//g')
    hash_username=$(echo $hash_pass | sed 's/ //g' | sed 's/-//g')

Security: Are you a robot or human?

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

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