©
This document uses PHP Chinese website manual Release
(PHP 4, PHP 5)
md5 — 计算字符串的 MD5 散列值
$str
[, bool $raw_output
= false
] )
使用 » RSA 数据安全公司的 MD5 报文算法计算 str
的 MD5 散列值。
str
原始字符串。
raw_output
如果可选的 raw_output
被设置为 TRUE
,那么 MD5 报文摘要将以16字节长度的原始二进制格式返回。
以 32 字符十六进制数字形式返回散列值。
版本 | 说明 |
---|---|
5.0.0 |
新增 raw_output 参数。
|
Example #1 md5() 范例
<?php
$str = 'apple' ;
if ( md5 ( $str ) === '1f3870be274f6c49b3e31a0c6728957f' ) {
echo "Would you like a green or red apple?" ;
}
?>
Note: Secure password hashing
由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见这里。
[#1] rafael59 [2014-04-14 23:18:48]
<?php
$str = "string";
echo md5($str);
?>
[#2] rahul dot giri64 at gmail dot com [2014-03-02 06:48:50]
Requested to every php programmer , never ever ever use md5() to encrypt your passwords. it's not safe.
Go for either one of this -
1) SHA-1
2) SHA-2(SHA-256 , SHA-512)
3) Whirlpool
4) Tiger
5) AES
6)blowfish (recommended 'it's , secure, free and easy)
I wish you safe internet life , thanks :)
[#3] rahul dot giri64 at gmail dot com [2014-03-02 06:48:13]
Requested to every php programmer , never ever ever use md5() to encrypt your passwords. it's not safe.
Go for either one of them -
1) SHA-1
2) SHA-2(SHA-256 , SHA-512)
3) Whirlpool
4) Tiger
5) AES
6)blowfish (recommended 'it's , secure, free and easy)
I wish you safe internet life , thanks :)
[#4] programings at abv dot bg [2013-07-02 06:25:56]
This recursive function allow you to hash something in depth using md5().
<?php
function checksum($what, $depth = 1) {
$depth--;
if (!$depth)
return md5($what);
else
return md5(checksum($what, $depth));
}
?>
The function hashed the previous hash to md5() again and again for number of times and returns the last received hash.
Example usage:
<?php
for ($i = 1; $i <= 10; $i++) {
echo "$i. ".checksum("test", $i)."<br />";
}
?>
It can be used for security purposes.
[#5] Anonymous [2011-05-03 10:28:30]
This is not encryption..... it's only a sort of DIGEST
[#6] John [2009-11-17 15:08:16]
If you want to hash a large amount of data you can use the hash_init/hash_update/hash_final functions.
This allows you to hash chunks/parts/incremental or whatever you like to call it.
[#7] admin at gadelkareem dot com [2008-01-14 20:16:00]
MySQL MD() will not give you the same hash if character set is different.
ex :
<?php
#suppose table_name CHARSET=UTF8
#$md5 = md5('St?dte'); # will give you a different hash than MySQL MD5()
#instead use
$md5 = md5(utf8_encode('St?dte'));
$r = mysql_query("SELECT *, MD5(`word`) FROM `table_name` WHERE MD5(`word`) LIKE '{$md5}'");
if($r)
while( $row= mysql_fetch_assoc($r) )
print_r($row);
?>
[#8] dionyziz at deviantart dot com [2007-08-11 12:24:00]
Sometimes it's useful to get the actual, binary, md5 digest.
You can use this function for it:
<?php
function md5bin( $target ) {
$md5 = md5( $target );
$ret = '';
for ( $i = 0; $i < 32; $i += 2 ) {
$ret .= chr( hexdec( $md5{ $i + 1 } ) + hexdec( $md5{ $i } ) * 16 );
}
return $ret;
}
?>
[#9] sebastian dot haller at freesurf dot ch [2007-04-07 00:06:40]
It has been found, that hash('md5', 'string'); is faster than md5($string):
http://www.php.net/manual/en/function.hash.php
[#10] marzetti dot marco at NOSPAM dot gmail dot com [2006-05-16 03:12:36]
The complement of raw2hex
<?php
function hex2raw( $str ){
$chunks = str_split($str, 2);
for( $i = 0; $i < sizeof($chunks); $i++ ) {
$op .= chr( hexdec( $chunks[$i] ) );
}
return $op;
}
?>
[#11] terry _at_ scribendi_com [2005-04-28 19:39:56]
Do not use the hex strings returned by md5() as a key for MCrypt 256-bit encryption. Hex characters only represent four bits each, so when you take 32 hex characters, you are only really using a 128-bit key, not a 256-bit one.
Using an alphanumeric key generator [A-Za-z0-9] will also only provide a 192-bit key in 32 characters.
Two different MD5s concatenated in raw binary form, or mcrypt_create_iv(32,MCRYPT_DEV_RANDOM) will give you a true 256-bit key string.
[#12] John S. [2004-12-03 11:42:15]
If you want to replicate CPAN Digest::MD5's function md5_base64 in PHP, use this code:
<?php
function md5_base64 ( $data )
{
return preg_replace('/=+$/','',base64_encode(pack('H*',md5($data))));
}
?>
[#13] Shane Allen [2003-04-14 20:53:14]
From the documentation on Digest::MD5:
md5($data,...)
This function will concatenate all arguments, calculate the MD5 digest of this "message", and return it in binary form.
md5_hex($data,...)
Same as md5(), but will return the digest in hexadecimal form.
PHP's function returns the digest in hexadecimal form, so my guess is that you're using md5() instead of md5_hex(). I have verified that md5_hex() generates the same string as PHP's md5() function.
(original comment snipped in various places)
>Hexidecimal hashes generated with Perl's Digest::MD5 module WILL
>NOT equal hashes generated with php's md5() function if the input
>text contains any non-alphanumeric characters.
>
>$phphash = md5('pa$$');
>echo "php original hash from text: $phphash";
>echo "md5 hash from perl: " . $myrow['password'];
>
>outputs:
>
>php original hash from text: 0aed5d740d7fab4201e885019a36eace
>hash from perl: c18c9c57cb3658a50de06491a70b75cd