Dutch PHP Conference 2023 - Call for Papers

# Функции Hash

## Содержание

• hash_algos — Возвращает список зарегистрированных алгоритмов хеширования
• hash_copy — Копирует контекст хеширования
• hash_equals — Сравнение строк, нечувствительное к атакам по времени
• hash_file — Генерация хеш-значения, используя содержимое заданного файла
• hash_final — Завершает инкрементальное хеширование и возвращает результат в виде хеш-кода
• hash_hkdf — Формирования ключа HKDF для заданных входных данных
• hash_hmac_algos — Возвращает список зарегистрированных алгоритмов хеширования, применимых для hash_hmac
• hash_hmac_file — Генерация хеш-кода на основе ключа, используя метод HMAC и содержимое полученного файла
• hash_hmac — Генерация хеш-кода на основе ключа, используя метод HMAC
• hash_init — Инициализация инкрементального контекста хеширования
• hash_pbkdf2 — Формирования ключа PBKDF2 для заданных входных данных
• hash_update_file — Добавляет данные из файла в активный контекст хеширования
• hash_update_stream — Добавляет данные из открытого потока в активный контекст хеширования
• hash_update — Добавляет данные в активный контекст хеширования
• hash — Генерирует хеш-код (подпись сообщения)

### User Contributed Notes 5 notes

CraquePipe
15 years ago
``` For thoes of you who're looking to generate an NTLM hash (not an LM hash), I found out it's quite simple..It uses the basic MD4 function, but the password needs to be in Unicode Little Endian encode first (this canbe achieved by the iconv function).This can be done easily by using the following code:<?phpfunction NTLMHash(\$Input) {  // Convert the password from UTF8 to UTF16 (little endian)  \$Input=iconv('UTF-8','UTF-16LE',\$Input);  // Encrypt it with the MD4 hash  \$MD4Hash=bin2hex(mhash(MHASH_MD4,\$Input));  // You could use this instead, but mhash works on PHP 4 and 5 or above  // The hash function only works on 5 or above  //\$MD4Hash=hash('md4',\$Input);  // Make it uppercase, not necessary, but it's common to do so with NTLM hashes  \$NTLMHash=strtoupper(\$MD4Hash);  // Return the result  return(\$NTLMHash);}?>To produce an LM hash requires a fully-written script containing the algorithm used to make it.Enjoy,CraquePipe. ```
artem at it-nt dot ru
14 years ago
``` And some code for LM hash:<?phpfunction LMhash(\$string){    \$string = strtoupper(substr(\$string,0,14));    \$p1 = LMhash_DESencrypt(substr(\$string, 0, 7));    \$p2 = LMhash_DESencrypt(substr(\$string, 7, 7));    return strtoupper(\$p1.\$p2);}function LMhash_DESencrypt(\$string){    \$key = array();    \$tmp = array();    \$len = strlen(\$string);    for (\$i=0; \$i<7; ++\$i)        \$tmp[] = \$i < \$len ? ord(\$string[\$i]) : 0;    \$key[] = \$tmp & 254;    \$key[] = (\$tmp << 7) | (\$tmp >> 1);    \$key[] = (\$tmp << 6) | (\$tmp >> 2);    \$key[] = (\$tmp << 5) | (\$tmp >> 3);    \$key[] = (\$tmp << 4) | (\$tmp >> 4);    \$key[] = (\$tmp << 3) | (\$tmp >> 5);    \$key[] = (\$tmp << 2) | (\$tmp >> 6);    \$key[] = \$tmp << 1;       \$is = mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_ECB);    \$iv = mcrypt_create_iv(\$is, MCRYPT_RAND);    \$key0 = "";       foreach (\$key as \$k)        \$key0 .= chr(\$k);    \$crypt = mcrypt_encrypt(MCRYPT_DES, \$key0, "KGS!@#\$%", MCRYPT_MODE_ECB, \$iv);    return bin2hex(\$crypt);}?>Some optimization? ```
-4
kungla at gmail dot com
13 years ago
``` For Samba ueserPassword you can use: (I am not very sure aboute the salt part, but it works for me like that) <?php function CRYPThash(\$string, \$salt = null) {     if (!\$salt)         \$salt = rand(10,99);         return "{CRYPT}".crypt(\$string, \$salt); } ?> In posted NTLMHash function you can also use: <?php // Encrypt it with the MD4 hash \$MD4Hash=hash('md4',\$Input); ?> So you don't need to install mhash libraries ```
-8
ocarter at mirabeau dot nl
13 years ago
``` Note for FreeBSD with PHP-5. This is disabled by default; use the security/php5-hash port:cd /usr/ports/security/php5-hash ; make install clean(do not use the security/pecl-hash port as in the past, see the /usr/ports/UPDATING post from 20081211) ```
-17
nb_removethis_ at wtal dot de
15 years ago
``` Some tests with mhash and hash revealed on my machine that hash needs more than twice as long to create a hash than mhash. The average of one million cylces of Haval128, Haval256, Gost, CRC32, MD5, SHA1 and SHA256 was 450ms for mhash and 1150ms for hash. ```
{"ft_lang_label":"__label__en","ft_lang_prob":0.74308294,"math_prob":0.7883356,"size":931,"snap":"2023-14-2023-23","text_gpt3_token_len":253,"char_repetition_ratio":0.11111111,"word_repetition_ratio":0.0,"special_character_ratio":0.26960257,"punctuation_ratio":0.12849163,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.95544094,"pos_list":[0,1,2],"im_url_duplicate_count":[null,null,null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2023-05-29T15:50:10Z\",\"WARC-Record-ID\":\"<urn:uuid:fe386118-90aa-4662-a1fb-ccadbdd9ceb6>\",\"Content-Length\":\"36835\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:19981fe2-20de-4c2c-9b04-f1aaf668acbc>\",\"WARC-Concurrent-To\":\"<urn:uuid:b2750d2d-1b40-40fa-bc40-405d380cf8ad>\",\"WARC-IP-Address\":\"185.85.0.29\",\"WARC-Target-URI\":\"https://www.php.net/manual/ru/ref.hash.php\",\"WARC-Payload-Digest\":\"sha1:Q4VSNXQ6SNIAONFGHJRD2WVAUE3J4ITE\",\"WARC-Block-Digest\":\"sha1:BF67G7OX3VYGZYKC34OPIMWSUTM2R4HZ\",\"WARC-Identified-Payload-Type\":\"application/xhtml+xml\",\"warc_filename\":\"/cc_download/warc_2023/CC-MAIN-2023-23/CC-MAIN-2023-23_segments_1685224644867.89_warc_CC-MAIN-20230529141542-20230529171542-00197.warc.gz\"}"}