文字

md5

(PHP 4, PHP 5)

md5计算字符串的 MD5 散列值

说明

string md5 ( string $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

由于此函数依赖的算法已不足够复杂,不推荐使用此函数对明文密码加密。详细内容参见这里。

参见

  • md5_file() - 计算指定文件的 MD5 散列值
  • sha1_file() - 计算文件的 sha1 散列值
  • crc32() - 计算一个字符串的 crc32 多项式
  • sha1() - 计算字符串的 sha1 散列值
  • hash() - 生成哈希值 (消息摘要)

用户评论:

[#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( 
$rowmysql_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 += ) {
        
$ret .= chrhexdec$md5$i } ) + 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($str2);
  for( 
$i 0$i sizeof($chunks); $i++ ) {
        
$op .= chrhexdec$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

上一篇: 下一篇: