Because many websites and research studies
have proved that md5()
can be reversed and you should stop using that !
In simple words....

You could very well make use of password_hash()
in PHP 5.5 and also the crypt()
those are the better ones considered so far.
A simple illustration of password_hash()
taken from PHP Manual
<?php
$options = [
'cost' => 12,
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>
A simple illustration of crypt
making using of the BLOWFISH
algorithm
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
EDIT :
Why you should not use md5()
?
Hashing algorithms such as MD5, SHA1 and SHA256 are designed to be
very fast and efficient. With modern techniques and computer
equipment, it has become trivial to "brute force" the output of these
algorithms, in order to determine the original input. Because of how
quickly a modern computer can "reverse" these hashing algorithms, many
security professionals strongly suggest against their use for password
hashing.
Why go for password_hash()
on PHP 5.5 ?
When hashing passwords, the two most important considerations are the
computational expense, and the salt. The more computationally
expensive the hashing algorithm, the longer it will take to brute
force its output. PHP 5.5 provides a native password hashing API which is the password_hash() that
safely handles both hashing and verifying passwords in a secure
manner.
Source