See https://en.wikipedia.org/wiki/Crypt_(C)#MD5-based_scheme