hash Функции

Содержание

  • hash_algos — Return a list of registered hashing algorithms
  • hash_file — Generate a hash value using the contents of a given file
  • hash_final — Finalize an incremental hash and return resulting digest
  • hash_hmac_file — Generate a keyed hash value using the HMAC method and the contents of a given file
  • hash_hmac — Generate a keyed hash value using the HMAC method
  • hash_init — Initialize an incremental hashing context
  • hash_update_file — Pump data into an active hashing context from a file
  • hash_update_stream — Pump data into an active hashing context from an open stream
  • hash_update — Pump data into an active hashing context
  • hash — Generate a hash value (message digest)

Коментарии

Автор:
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:

<?php
function 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.
2008-03-24 18:42:41
http://php5.kiev.ua/manual/ru/ref.hash.html
And some code for LM hash:

<?php
function LMhash($string)
{
   
$string strtoupper(substr($string,0,14));

   
$p1 LMhash_DESencrypt(substr($string07));
   
$p2 LMhash_DESencrypt(substr($string77));

    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[0] & 254;
   
$key[] = ($tmp[0] << 7) | ($tmp[1] >> 1);
   
$key[] = ($tmp[1] << 6) | ($tmp[2] >> 2);
   
$key[] = ($tmp[2] << 5) | ($tmp[3] >> 3);
   
$key[] = ($tmp[3] << 4) | ($tmp[4] >> 4);
   
$key[] = ($tmp[4] << 3) | ($tmp[5] >> 5);
   
$key[] = ($tmp[5] << 2) | ($tmp[6] >> 6);
   
$key[] = $tmp[6] << 1;
   
   
$is mcrypt_get_iv_size(MCRYPT_DESMCRYPT_MODE_ECB);
   
$iv mcrypt_create_iv($isMCRYPT_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?
2008-07-20 15:35:55
http://php5.kiev.ua/manual/ru/ref.hash.html
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
2009-12-07 07:00:32
http://php5.kiev.ua/manual/ru/ref.hash.html
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)
2010-01-11 09:22:45
http://php5.kiev.ua/manual/ru/ref.hash.html

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