ddn.crypto.hash.md5

MD5 Hash Implementation (RFC 1321).

DEPRECATED — Do not use for security-critical purposes.

MD5 is cryptographically broken. Practical collision attacks have been demonstrated since 2004, and chosen-prefix collisions are trivially obtainable. MD5 must not be used for digital signatures, certificate generation, password hashing, or any application that relies on collision resistance or preimage resistance.

Acceptable legacy uses include non-security checksums, data deduplication keys, and compatibility with existing protocols that mandate MD5. Even in those cases, consider migrating to SHA-256 or BLAKE2b at the earliest opportunity.

See Also

class MD5Digest

Types 1

MD5 message-digest algorithm (RFC 1321).

This hash is cryptographically broken.

Produces a 16-byte (128-bit) digest. Provided only for backward compatibility with legacy protocols.

Fields
private uint[4] _state
private ulong _byteCount
private ubyte[64] _buffer
private size_t _bufferSize
Methods
Hash update(const(ubyte)[] input)Updates the digest with the given input data.
ubyte[] finish()Finalizes the digest computation and returns the 16-byte hash. Resets the instance to its initial state.
void reset()Resets the digest to its initial state.
size_t blockSize() @property constReturns: The internal block size (64 bytes).
size_t size() @property constReturns: The digest size (16 bytes).
private void transform(const(ubyte)[] block)
private void FF(ref uint a, uint b, uint c, uint d, uint x, uint s, uint ac)
private void GG(ref uint a, uint b, uint c, uint d, uint x, uint s, uint ac)
private void HH(ref uint a, uint b, uint c, uint d, uint x, uint s, uint ac)
private void II(ref uint a, uint b, uint c, uint d, uint x, uint s, uint ac)
private uint rotateLeft(uint x, uint n) pure nothrow @nogc
Constructors
this()Constructs a new MD5 digest instance and resets its state.