Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/01/2007, 13:32
nobileelpirata
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 19 años
Puntos: 0
De acuerdo Re: Escribir la función MD5 en PHP

Ya lo encontre buscando e google, habia mas buscando, aqui esta y funciona!

Código PHP:
function rhex($num) {
    
$hex_chr "0123456789abcdef";
    
$str "";
    for(
$j 0$j <= 3$j++)
        
$str .= substr($hex_chr, ($num >> ($j 4)) & 0x0F1) . substr($hex_chr, ($num >> ($j 8)) & 0x0F1);
    return 
$str;
}
function 
str2blks_MD5($str) {
    
$nblk = ((strlen($str) + 8) >> 6) + 1;
    for(
$i 0$i $nblk 16$i++) $blks[$i] = 0;
    for(
$i 0$i strlen($str); $i++)
        
$blks[$i >> 2] |= ord(substr($str$i1)) << (($i 4) * 8);
    
$blks[$i >> 2] |= 0x80 << (($i 4) * 8);
    
$blks[$nblk 16 2] = strlen($str) * 8;
    return 
$blks;
}
function 
add($x$y) {
    
$lsw = ($x 0xFFFF) + ($y 0xFFFF);
    
$msw = ($x >> 16) + ($y >> 16) + ($lsw >> 16);
    return (
$msw << 16) | ($lsw 0xFFFF);
}
function 
rol($num$cnt) {
    return (
$num << $cnt) | zeroFill($num32 $cnt);
}
function 
zeroFill($a$b) {
    
$bin decbin($a);
    if (
strlen($bin) < $b$bin 0;
    else 
$bin substr($bin0strlen($bin) - $b);
    for (
$i=0$i $b$i++) {
        
$bin "0".$bin;
    }
    return 
bindec($bin);
}
function 
cmn($q$a$b$x$s$t) {
    return 
add(rol(add(add($a$q), add($x$t)), $s), $b);
}
function 
ff($a$b$c$d$x$s$t) {
    return 
cmn(($b $c) | ((~$b) & $d), $a$b$x$s$t);
}
function 
gg($a$b$c$d$x$s$t) {
    return 
cmn(($b $d) | ($c & (~$d)), $a$b$x$s$t);
}
function 
hh($a$b$c$d$x$s$t) {
    return 
cmn($b $c $d$a$b$x$s$t);
}
function 
ii($a$b$c$d$x$s$t) {
    return 
cmn($c ^ ($b | (~$d)), $a$b$x$s$t);
}
function 
md5p($str) {
  
$x str2blks_MD5($str);
  
$a =  1732584193;
  
$b = -271733879;
  
$c = -1732584194;
  
$d =  271733878;

  for(
$i 0$i sizeof($x); $i += 16) {
    
$olda $a;
    
$oldb $b;
    
$oldc $c;
    
$oldd $d;

    
$a ff($a$b$c$d$x[$i0], , -680876936);
    
$d ff($d$a$b$c$x[$i1], 12, -389564586);
    
$c ff($c$d$a$b$x[$i2], 17,  606105819);
    
$b ff($b$c$d$a$x[$i3], 22, -1044525330);
    
$a ff($a$b$c$d$x[$i4], , -176418897);
    
$d ff($d$a$b$c$x[$i5], 12,  1200080426);
    
$c ff($c$d$a$b$x[$i6], 17, -1473231341);
    
$b ff($b$c$d$a$x[$i7], 22, -45705983);
    
$a ff($a$b$c$d$x[$i8], ,  1770035416);
    
$d ff($d$a$b$c$x[$i9], 12, -1958414417);
    
$c ff($c$d$a$b$x[$i+10], 17, -42063);
    
$b ff($b$c$d$a$x[$i+11], 22, -1990404162);
    
$a ff($a$b$c$d$x[$i+12], ,  1804603682);
    
$d ff($d$a$b$c$x[$i+13], 12, -40341101);
    
$c ff($c$d$a$b$x[$i+14], 17, -1502002290);
    
$b ff($b$c$d$a$x[$i+15], 22,  1236535329);

    
$a gg($a$b$c$d$x[$i1], , -165796510);
    
$d gg($d$a$b$c$x[$i6], , -1069501632);
    
$c gg($c$d$a$b$x[$i+11], 14,  643717713);
    
$b gg($b$c$d$a$x[$i0], 20, -373897302);
    
$a gg($a$b$c$d$x[$i5], , -701558691);
    
$d gg($d$a$b$c$x[$i+10], ,  38016083);
    
$c gg($c$d$a$b$x[$i+15], 14, -660478335);
    
$b gg($b$c$d$a$x[$i4], 20, -405537848);
    
$a gg($a$b$c$d$x[$i9], ,  568446438);
    
$d gg($d$a$b$c$x[$i+14], , -1019803690);
    
$c gg($c$d$a$b$x[$i3], 14, -187363961);
    
$b gg($b$c$d$a$x[$i8], 20,  1163531501);
    
$a gg($a$b$c$d$x[$i+13], , -1444681467);
    
$d gg($d$a$b$c$x[$i2], , -51403784);
    
$c gg($c$d$a$b$x[$i7], 14,  1735328473);
    
$b gg($b$c$d$a$x[$i+12], 20, -1926607734);

    
$a hh($a$b$c$d$x[$i5], , -378558);
    
$d hh($d$a$b$c$x[$i8], 11, -2022574463);
    
$c hh($c$d$a$b$x[$i+11], 16,  1839030562);
    
$b hh($b$c$d$a$x[$i+14], 23, -35309556);
    
$a hh($a$b$c$d$x[$i1], , -1530992060);
    
$d hh($d$a$b$c$x[$i4], 11,  1272893353);
    
$c hh($c$d$a$b$x[$i7], 16, -155497632);
    
$b hh($b$c$d$a$x[$i+10], 23, -1094730640);
    
$a hh($a$b$c$d$x[$i+13], ,  681279174);
    
$d hh($d$a$b$c$x[$i0], 11, -358537222);
    
$c hh($c$d$a$b$x[$i3], 16, -722521979);
    
$b hh($b$c$d$a$x[$i6], 23,  76029189);
    
$a hh($a$b$c$d$x[$i9], , -640364487);
    
$d hh($d$a$b$c$x[$i+12], 11, -421815835);
    
$c hh($c$d$a$b$x[$i+15], 16,  530742520);
    
$b hh($b$c$d$a$x[$i2], 23, -995338651);

    
$a ii($a$b$c$d$x[$i0], , -198630844);
    
$d ii($d$a$b$c$x[$i7], 10,  1126891415);
    
$c ii($c$d$a$b$x[$i+14], 15, -1416354905);
    
$b ii($b$c$d$a$x[$i5], 21, -57434055);
    
$a ii($a$b$c$d$x[$i+12], ,  1700485571);
    
$d ii($d$a$b$c$x[$i3], 10, -1894986606);
    
$c ii($c$d$a$b$x[$i+10], 15, -1051523);
    
$b ii($b$c$d$a$x[$i1], 21, -2054922799);
    
$a ii($a$b$c$d$x[$i8], ,  1873313359);
    
$d ii($d$a$b$c$x[$i+15], 10, -30611744);
    
$c ii($c$d$a$b$x[$i6], 15, -1560198380);
    
$b ii($b$c$d$a$x[$i+13], 21,  1309151649);
    
$a ii($a$b$c$d$x[$i4], , -145523070);
    
$d ii($d$a$b$c$x[$i+11], 10, -1120210379);
    
$c ii($c$d$a$b$x[$i2], 15,  718787259);
    
$b ii($b$c$d$a$x[$i9], 21, -343485551);

        
$a add($a$olda);
        
$b add($b$oldb);
        
$c add($c$oldc);
        
$d add($d$oldd);
    }
    return 
rhex($a) . rhex($b) . rhex($c) . rhex($d);
}
echo 
md5p('word');//Generado manualmente
echo "\r\n<br />".md5('word');//Generado con PHP