Taken from Linux's md5.c. This implementation is not very