Example #1
0
<?php

$supported_hash_al = array("MD5" => 16, "MD4" => 16, "SHA1" => 20, "SHA256" => 32, "HAVAL256" => 32, "HAVAL192" => 24, "HAVAL224" => 28, "HAVAL160" => 20, "HAVAL128" => 16, "RIPEMD160" => 20, "GOST" => 32, "TIGER" => 24, "TIGER160" => 20, "TIGER128" => 16, "CRC32" => 4, "CRC32B" => 4, "ADLER32" => 4, "NA_XYZ" => 0);
$hc = mhash_count() + 1;
$known_hash_al = array();
for ($i = 0; $i < $hc; $i++) {
    $known_hash_al[mhash_get_hash_name($i)] = $i;
}
foreach ($supported_hash_al as $name => $len) {
    if (array_key_exists($name, $known_hash_al)) {
        $len = mhash_get_block_size($known_hash_al[$name]);
        echo "{$name} = {$len}\n";
    } else {
        echo "{$name} ? {$len}\n";
    }
}
Example #2
0
 function mhash($hashtype, $text, $key)
 {
     #-- hash function
     if (!($func = mhash_get_hash_name($hashtype)) || !function_exists($func)) {
         return trigger_error("mhash: cannot use hash algorithm #{$hashtype}/{$func}", E_USER_ERROR);
     }
     if (!$key) {
         trigger_error("mhash: called without key", E_USER_WARNING);
     }
     #-- params
     $bsize = mhash_get_block_size($hashtype);
     // fixed size, 64
     #-- pad key
     if (strlen($key) > $bsize) {
         // hash key, when it's too long
         $key = $func($key);
         $key = pack("H*", $key);
         // binarify
     }
     $key = str_pad($key, $bsize, "");
     // fill up with NULs (1)
     #-- prepare inner and outer padding stream
     $ipad = str_pad("", $bsize, "6");
     // %36
     $opad = str_pad("", $bsize, "\\");
     // %5C
     #-- call hash func    // php can XOR strings for us
     $dgst = pack("H*", $func(($key ^ $ipad) . $text));
     // (2,3,4)
     $dgst = pack("H*", $func(($key ^ $opad) . $dgst));
     // (5,6,7)
     return $dgst;
 }
Example #3
0
require_once FREEBEER_BASE . '/lib/Mhash.php';
echo html_header_demo('fbMhash Class (mhash() Emulation)');
$data = 'data';
$key = 'key';
echo "<pre>\n";
echo "mhash(MHASH_MD5, '{$data}', '{$key}')=", mhash(MHASH_MD5, $data, $key), "\n";
echo "bin2hex(mhash(MHASH_MD5, '{$data}', '{$key}'))=   ", bin2hex(mhash(MHASH_MD5, $data, $key)), "\n";
if (class_exists('fbMhash')) {
    echo "fbMhash::mhashhex(MHASH_MD5, '{$data}', '{$key}')=", fbMhash::mhashhex(MHASH_MD5, $data, $key), "\n";
}
if (defined('MHASH_SHA1')) {
    echo "mhash(MHASH_SHA1, '{$data}', '{$key}')=", mhash(MHASH_SHA1, $data, $key), "\n";
    echo "bin2hex(mhash(MHASH_SHA1, '{$data}', '{$key}'))=   ", bin2hex(mhash(MHASH_SHA1, $data, $key)), "\n";
    if (class_exists('fbMhash')) {
        echo "fbMhash::mhashhex(MHASH_SHA1, '{$data}', '{$key}')=", fbMhash::mhashhex(MHASH_SHA1, $data, $key), "\n";
    }
}
$hash_map = array(0 => 'MHASH_CRC32', 9 => 'MHASH_CRC32B', 8 => 'MHASH_GOST', 13 => 'MHASH_HAVAL128', 12 => 'MHASH_HAVAL160', 11 => 'MHASH_HAVAL192', 10 => 'MHASH_HAVAL224', 3 => 'MHASH_HAVAL256', 16 => 'MHASH_MD4', 1 => 'MHASH_MD5', 5 => 'MHASH_RIPEMD160', 2 => 'MHASH_SHA1', 17 => 'MHASH_SHA256', 7 => 'MHASH_TIGER', 14 => 'MHASH_TIGER128', 15 => 'MHASH_TIGER160');
$nr = mhash_count();
for ($i = 0; $i < $nr; $i++) {
    echo sprintf("The blocksize of %s is %d\n", mhash_get_hash_name($i), mhash_get_block_size($i));
}
?>
</pre>
<address>
$CVSHeader: _freebeer/www/demo/Mhash.php,v 1.2 2004/03/07 17:51:33 ross Exp $
</address>

</body>
</html>