把這段密文分割成若干段,對每段都進(jìn)行一次MD5運(yùn)算,然后把這堆密文連成一個超長的字符串,最后再進(jìn)行一次MD5運(yùn)算,得到仍然是長度為32位的密文。
?php
//把密文分割成兩段,每段16個字符
function md5_2_1($data)
{
//先把密碼加密成長度為32字符的密文
$data = md5($data);
//把密碼分割成兩段
$left = substr($data, 0, 16);
$right = substr($data, 16, 16);
//分別加密后再合并
$data = md5($left).md5($right);
//最后把長字串再加密一次,成為32字符密文
return md5($data);
}
//把密文分割成32段,每段1個字符
function md5_2_2($data)
{
$data = md5($data);
//循環(huán)地截取密文中的每個字符并進(jìn)行加密、連接
for ($i = 0; $i 32; $i++) {
$data .= md5($data{$i});
}
//這時$data長度為1024個字符,再進(jìn)行一次MD5運(yùn)算
return md5($data);
}
?>