RFC 1186 (rfc1186) - Page 2 of 18


MD4 Message Digest Algorithm



Alternative Format: Original Text Document

< Previous
Next >



RFC 1186              MD4 Message Digest Algorithm          October 1990


   (Note: The document supersedes an earlier draft.  The algorithm
   described here is a slight modification of the one described in the
   draft.)

2.  Terminology and Notation

   In this note a "word" is a 32-bit quantity and a byte is an 8-bit
   quantity.  A sequence of bits can be interpreted in a natural manner
   as a sequence of bytes, where each consecutive group of 8 bits is
   interpreted as a byte with the high-order (most significant) bit of
   each byte listed first.  Similarly, a sequence of bytes can be
   interpreted as a sequence of 32-bit words, where each consecutive
   group of 4 bytes is interpreted as a word with the low-order (least
   significant) byte given first.

   Let x_i denote "x sub i".  If the subscript is an expression, we
   surround it in braces, as in x_{i+1}.  Similarly, we use ^ for
   superscripts (exponentiation), so that x^i denotes x to the i-th
   power.

   Let the symbol "+" denote addition of words (i.e., modulo- 2^32
   addition). Let X <<< s denote the 32-bit value obtained by circularly
   shifting (rotating) X left by s bit positions.  Let not(X) denote the
   bit-wise complement of X, and let X v Y denote the bit-wise OR of X
   and Y.  Let X xor Y denote the bit-wise XOR of X and Y, and let XY
   denote the bit-wise AND of X and Y.

3.  MD4 Algorithm Description

   We begin by supposing that we have a b-bit message as input, and that
   we wish to find its message digest.  Here b is an arbitrary
   nonnegative integer; b may be zero, it need not be a multiple of 8,
   and it may be arbitrarily large.  We imagine the bits of the message
   written down as follows:

                m_0 m_1 ... m_{b-1} .

   The following five steps are performed to compute the message digest
   of the message.

      Step 1. Append padding bits

         The message is "padded" (extended) so that its length (in bits)
         is congruent to 448, modulo 512.  That is, the message is
         extended so that it is just 64 bits shy of being a multiple of
         512 bits long.  Padding is always performed, even if the length
         of the message is already congruent to 448, modulo 512 (in
         which case 512 bits of padding are added).



Rivest


< Previous
Next >


Web Standards & Support:

Link to and support eLook.org Powered by LoadedWeb Web Hosting
Valid XHTML 1.0! Valid CSS! eLook.org FireFox Extensions