md5

(PHP 4, PHP 5)

md5Возвращает MD5-хэш строки

Описание

string md5 ( string $str [, bool $raw_output = false ] )

Вычисляет MD5-хэш строки str используя » алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш.

Список параметров

str

Строка.

raw_output

Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.

Возвращаемые значения

Возвращает хэш в виде 32-символьного шестнадцатеричного числа.

Список изменений

Версия Описание
5.0.0 Добавлен параметр raw_output.

Примеры

Пример #1 Пример использования md5()

<?php
$str 
'яблоко';

if (
md5($str) === '1afa148eb41f2e7103f21410bf48346c') {
    echo 
"Вам зеленое или красное яблоко?";
}
?>

Примечания

Замечание: Безопасное хэширование паролей

В связи с быстрой природой хэширующего алгоритма не рекомендуется использовать эту функцию для обеспечения безопасности паролей. Подробнее об этом можно прочитать здесь.

Смотрите также

  • md5_file() - Возвращает MD5-хэш файла
  • sha1_file() - Возвращает SHA1-хэш файла
  • crc32() - Вычисляет полином CRC32 для строки
  • sha1() - Возвращает SHA1-хэш строки
  • hash() - Генерирует хеш-код (дайджест сообщения)

Коментарии

Автор:
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
2003-04-14 23:53:14
http://php5.kiev.ua/manual/ru/function.md5.html
Автор:
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))));
}

?>
2004-12-03 13:42:15
http://php5.kiev.ua/manual/ru/function.md5.html
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.
2005-04-28 22:39:56
http://php5.kiev.ua/manual/ru/function.md5.html
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;
}

?>
2006-05-16 06:12:36
http://php5.kiev.ua/manual/ru/function.md5.html
It has been found, that hash('md5', 'string'); is faster than md5($string):

function.hash
2007-04-07 03:06:40
http://php5.kiev.ua/manual/ru/function.md5.html
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;
}

?>
2007-08-11 15:24:00
http://php5.kiev.ua/manual/ru/function.md5.html
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);

?>
2008-01-14 22:16:00
http://php5.kiev.ua/manual/ru/function.md5.html
Автор:
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.
2009-11-17 17:08:16
http://php5.kiev.ua/manual/ru/function.md5.html
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.
2013-07-02 09:25:56
http://php5.kiev.ua/manual/ru/function.md5.html
<?php
   
function raw2hex($rawBinaryChars)
    {
      return = 
array_pop(unpack('H*'$rawBinaryChars));
    }
?>

The complement of hey2raw.
You can use to convert from raw md5-format to human-readable format.

This can be usefull to check "Content-Md5" HTTP-Header.

<?php
  $rawMd5   
base64_decode($_SERVER['HTTP_CONTENT_MD5']);
 
$post_data file_get_contents("php://input");

  if(
raw2hex($rawMd5) == md5($post_data)) // Post-Data is okay
 
else                                    // Post-Data is currupted
?>
2016-04-18 17:10:17
http://php5.kiev.ua/manual/ru/function.md5.html
Автор:
speed of hash('md5',) VS md5()

2017-07-14, on a i7-3540M CPU @ 3.00GHz, md5() is slightly quicker than hash('md5',)
This code takes 2.29 seconds
<?php
for($i=0;$i<10000000;++$imd5("$i");
?>

while this one takes 2.77 seconds
<?php
for($i=0;$i<10000000;++$ihash('md5',"$i");
?>

But in average, less than half a second for 10 000 000 repetitions is a very minimal advantage.
2017-07-14 18:24:44
http://php5.kiev.ua/manual/ru/function.md5.html
Автор:
Note: Before you get some idea like using md5 with password as way to prevent others tampering with message, read pages "Length extension attack" and "Hash-based message authentication code" on wikipedia. In short, naive constructions can be dangerously insecure. Use hash_hmac if available or reimplement HMAC properly without shortcuts.
2017-11-27 12:11:40
http://php5.kiev.ua/manual/ru/function.md5.html
md5('240610708') == md5('QNKCDZO')

This comparison is true because both md5() hashes start '0e' so PHP type juggling understands these strings to be scientific notation.  By definition, zero raised to any power is zero.
2018-12-01 19:10:26
http://php5.kiev.ua/manual/ru/function.md5.html

    Поддержать сайт на родительском проекте КГБ