size-efficient, and will probably be rewritten. The md5.c from MatrixSSL is too ugly to consider importing.