Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/01/2007, 13:32
nobileelpirata
 
Fecha de Ingreso: mayo-2005
Mensajes: 12
Antigüedad: 21 años, 5 meses
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 * 8 + 4)) & 0x0F, 1) . substr($hex_chr, ($num >> ($j * 8)) & 0x0F, 1);
    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, $i, 1)) << (($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($num, 32 - $cnt);
}
function 
zeroFill($a, $b) {
    
$bin = decbin($a);
    if (
strlen($bin) < $b) $bin = 0;
    else 
$bin = substr($bin, 0, strlen($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[$i+ 0], 7 , -680876936);
    
$d = ff($d, $a, $b, $c, $x[$i+ 1], 12, -389564586);
    
$c = ff($c, $d, $a, $b, $x[$i+ 2], 17,  606105819);
    
$b = ff($b, $c, $d, $a, $x[$i+ 3], 22, -1044525330);
    
$a = ff($a, $b, $c, $d, $x[$i+ 4], 7 , -176418897);
    
$d = ff($d, $a, $b, $c, $x[$i+ 5], 12,  1200080426);
    
$c = ff($c, $d, $a, $b, $x[$i+ 6], 17, -1473231341);
    
$b = ff($b, $c, $d, $a, $x[$i+ 7], 22, -45705983);
    
$a = ff($a, $b, $c, $d, $x[$i+ 8], 7 ,  1770035416);
    
$d = ff($d, $a, $b, $c, $x[$i+ 9], 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], 7 ,  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[$i+ 1], 5 , -165796510);
    
$d = gg($d, $a, $b, $c, $x[$i+ 6], 9 , -1069501632);
    
$c = gg($c, $d, $a, $b, $x[$i+11], 14,  643717713);
    
$b = gg($b, $c, $d, $a, $x[$i+ 0], 20, -373897302);
    
$a = gg($a, $b, $c, $d, $x[$i+ 5], 5 , -701558691);
    
$d = gg($d, $a, $b, $c, $x[$i+10], 9 ,  38016083);
    
$c = gg($c, $d, $a, $b, $x[$i+15], 14, -660478335);
    
$b = gg($b, $c, $d, $a, $x[$i+ 4], 20, -405537848);
    
$a = gg($a, $b, $c, $d, $x[$i+ 9], 5 ,  568446438);
    
$d = gg($d, $a, $b, $c, $x[$i+14], 9 , -1019803690);
    
$c = gg($c, $d, $a, $b, $x[$i+ 3], 14, -187363961);
    
$b = gg($b, $c, $d, $a, $x[$i+ 8], 20,  1163531501);
    
$a = gg($a, $b, $c, $d, $x[$i+13], 5 , -1444681467);
    
$d = gg($d, $a, $b, $c, $x[$i+ 2], 9 , -51403784);
    
$c = gg($c, $d, $a, $b, $x[$i+ 7], 14,  1735328473);
    
$b = gg($b, $c, $d, $a, $x[$i+12], 20, -1926607734);

    
$a = hh($a, $b, $c, $d, $x[$i+ 5], 4 , -378558);
    
$d = hh($d, $a, $b, $c, $x[$i+ 8], 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[$i+ 1], 4 , -1530992060);
    
$d = hh($d, $a, $b, $c, $x[$i+ 4], 11,  1272893353);
    
$c = hh($c, $d, $a, $b, $x[$i+ 7], 16, -155497632);
    
$b = hh($b, $c, $d, $a, $x[$i+10], 23, -1094730640);
    
$a = hh($a, $b, $c, $d, $x[$i+13], 4 ,  681279174);
    
$d = hh($d, $a, $b, $c, $x[$i+ 0], 11, -358537222);
    
$c = hh($c, $d, $a, $b, $x[$i+ 3], 16, -722521979);
    
$b = hh($b, $c, $d, $a, $x[$i+ 6], 23,  76029189);
    
$a = hh($a, $b, $c, $d, $x[$i+ 9], 4 , -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[$i+ 2], 23, -995338651);

    
$a = ii($a, $b, $c, $d, $x[$i+ 0], 6 , -198630844);
    
$d = ii($d, $a, $b, $c, $x[$i+ 7], 10,  1126891415);
    
$c = ii($c, $d, $a, $b, $x[$i+14], 15, -1416354905);
    
$b = ii($b, $c, $d, $a, $x[$i+ 5], 21, -57434055);
    
$a = ii($a, $b, $c, $d, $x[$i+12], 6 ,  1700485571);
    
$d = ii($d, $a, $b, $c, $x[$i+ 3], 10, -1894986606);
    
$c = ii($c, $d, $a, $b, $x[$i+10], 15, -1051523);
    
$b = ii($b, $c, $d, $a, $x[$i+ 1], 21, -2054922799);
    
$a = ii($a, $b, $c, $d, $x[$i+ 8], 6 ,  1873313359);
    
$d = ii($d, $a, $b, $c, $x[$i+15], 10, -30611744);
    
$c = ii($c, $d, $a, $b, $x[$i+ 6], 15, -1560198380);
    
$b = ii($b, $c, $d, $a, $x[$i+13], 21,  1309151649);
    
$a = ii($a, $b, $c, $d, $x[$i+ 4], 6 , -145523070);
    
$d = ii($d, $a, $b, $c, $x[$i+11], 10, -1120210379);
    
$c = ii($c, $d, $a, $b, $x[$i+ 2], 15,  718787259);
    
$b = ii($b, $c, $d, $a, $x[$i+ 9], 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