用php写的md5加密函数
//php_md5("字符串") define("bits_to_a_byte",8); define("bytes_to_a_word",4); define("bits_to_a_word",32); $m_lonbits=array(30); $m_l2power=array(30);
function lshift($lvalue,$ishiftbits) { if ($ishiftbits==0) return $lvalue; if ($ishiftbits==31) { if ($lvalue&1) { return 0x80000000; } else { return 0; } } if ($ishiftbits < 0 || $ishiftbits > 31) { } if (($lvalue&$globals[31-$ishiftbits])) { $tmpstr=(($lvalue&$globals[31-($ishiftbits+1)])*$globals[$ishiftbits])|0x80000000; } else { $tmpstr=(($lvalue&$globals[31-$ishiftbits])*$globals[$ishiftbits]); } return $tmpstr; }
function rshift($lvalue,$ishiftbits) { if ($ishiftbits==0)return $lvalue; if ($ishiftbits==31) { if ($lvalue&0x80000000) { return 1; } else { return 0; } } if ($ishiftbits<0 || $ishiftbits>31) { } $tmpstr=floor(($lvalue&0x7ffffffe)/$globals[$ishiftbits]); if ($lvalue&0x80000000) { $tmpstr=$tmpstr|floor(0x40000000/$globals[$ishiftbits-1]); } return $tmpstr; }
function rotateleft($lvalue,$ishiftbits) { return lshift($lvalue,$ishiftbits)|rshift($lvalue,(32-$ishiftbits)); }
function addunsigned($lx,$ly) { $lx8=$lx&0x80000000; $ly8=$ly&0x80000000; $lx4=$lx&0x40000000; $ly4=$ly&0x40000000; $lresult=($lx&0x3fffffff)+($ly&0x3fffffff);
if ($lx4&$ly4) { $lresult=$lresult^0x80000000^$lx8^$ly8; } if ($lx4|$ly4) { if ($lresult&0x40000000) { $lresult=$lresult^0xc0000000^$lx8^$ly8; } else { $lresult=$lresult^0x40000000^$lx8^$ly8; } } else { $lresult=$lresult^$lx8^$ly8; } return $lresult; }
function md5_f($x,$y,$z) { return ($x&$y)|((~$x)&$z); }
function md5_g($x,$y,$z) { return ($x&$z)|($y&(~$z)); }
function md5_h($x,$y,$z) { return ($x^$y^$z); }
function md5_i($x,$y,$z) { return ($y^($x|(~$z))); }
function md5_ff(&$a,$b,$c,$d,$x,$s,$ac) { $a=addunsigned($a,addunsigned(addunsigned(md5_f($b,$c,$d),$x),$ac)); $a=rotateleft($a,$s); $a=addunsigned($a,$b); }
function md5_gg(&$a,$b,$c,$d,$x,$s,$ac) { $a=addunsigned($a,addunsigned(addunsigned(md5_g($b,$c,$d),$x),$ac)); $a=rotateleft($a,$s); $a=addunsigned($a,$b); }
function md5_hh(&$a,$b,$c,$d,$x,$s,$ac) { $a=addunsigned($a,addunsigned(addunsigned(md5_h($b,$c,$d),$x),$ac)); $a=rotateleft($a,$s); $a=addunsigned($a,$b); }
function md5_ii(&$a,$b,$c,$d,$x,$s,$ac) { $a=addunsigned($a,addunsigned(addunsigned(md5_i($b,$c,$d),$x),$ac)); $a=rotateleft($a,$s); $a=addunsigned($a,$b); }
|