implement working MD5 checksum