I'm not to sure why MD5 use copyMem and zeroMem and also conversion to `cstring`.
Note that the module was written mostly in 2010: [https://github.com/nim-lang/Nim/commits/version-1-0/lib/pure/md5.nim](https://github.com/nim-lang/Nim/commits/version-1-0/lib/pure/md5.nim) It wouldn't look the same now and we can certainly modify it to be nosideeffect.
