http://www.perlmonks.org?node_id=788902


in reply to Re^2: MD5 -- not digest::md5
in thread MD5 -- not digest::md5

$b = ($b + (($a + $f + $k[$i] + $w[$g]) << $r[$i])) % (2**32);

Might not give the right result. "The result of overflowing the range of the integers is undefined" according to the docs. You need to do the proper masking *before* the shift, not after.