Back to results
US 7,627,764 B2Granted
Apparatus and method for performing MD5 digesting
AssigneeIntel Corporation
InventorsKamal J. Koshy, Jaroslaw J. Sydir, Wajdi K. Feghali
Life of this patent
Estimating the term…
Abstract
An arrangement is provided for performing MD5 digesting. The arrangement includes apparatuses and methods that pipeline the MD5 digesting process to produce a 128 bit digest for an input message of any arbitrary length.
Claims45
An apparatus for performing MD5 digesting, comprising:
- a variable storage device configured to store root variables;
- a function computing mechanism configured to compute auxiliary functions based on values of a portion of the root variables, a first value corresponding to a root variable not in the portion of the root variables and a second value corresponding to the root variable, wherein the actual value of the root variable is an iteration result of a preceding iteration;
- a pre-addition calculator to calculate a sum among three parameters, in parallel with the auxiliary function computation performed by the function computing mechanism;
- and
- a post processor to produce an iteration result for an MD5 digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
2 more elements
An apparatus for performing message digesting, comprising:
- a variable storage device configured to store root variables;
- a function computing mechanism configured to compute a first set of functions based on a first value corresponding to a root variable and a second set of functions based on a second value corresponding to the root variable, wherein the actual value of the root variable is an iteration result of a preceding iteration, both the first set of functions and the second set of functions based on values of a portion of the root variables wherein the portion of the root variables does not include the root variable;
- a pre-addition calculator to calculate a sum among a set of parameters, in parallel with the auxiliary function computation performed by the function computing mechanism;
- and
- a post processor to produce an iteration result for a message digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
2 more elements
A method for performing MD5 digesting, comprising:
- receiving a first message at an apparatus for performing MD5 digesting;
- preparing the first message using a preparation mechanism to generate a second message and a plurality of parameters, wherein the second message has a length of a multiple of 16-word blocks;
- initializing root variables stored in a variable storage device;
- performing four rounds of computations for each 16-word block in the second message, based at least in part on the plurality of parameters and the initialized root variables, to produce a digest for the first message, wherein each round comprises a plurality of iterations including iteration n and iteration n+1, each iteration comprising a computation, and iteration n+1 being based on a result of iteration n, and the computation of iteration n is performed by a pre-addition calculator in parallel with the computation of iteration n+1, wherein the computation of iteration n is computed by computing an actual value of a root variable, and the computation of iteration n+1 comprises a function computing mechanism configured to compute an auxiliary function based on a first value of the root variable and computing the auxiliary function based on a second value of the root variable, the actual value of the root variable being the result of iteration n;
- and
- circularly rotating root variables using a controller after each iteration of computations is completed and before a succeeding iteration starts.
3 more elements
A method for pipelining message digesting, comprising:
- receiving a first message at an apparatus for performing message digesting;
- preparing the first message using a preparation mechanism to generate a second message and a plurality of parameters, wherein the second message has a length of a multiple of N-word blocks, wherein N is a positive integer;
- initializing root variables stored in a variable storage device;
- and
- performing M rounds of computations for each N-word block in the second message, based at least in part on the plurality of parameters and the initialized root variables, to produce a digest for the first message, wherein M is a positive integer and a round of computations comprises a multiple of iterations of computations including iteration n and iteration nil, and iteration n+1 being based on a result of iteration n, iterations of computations being computed using a two-stage pipeline, wherein a second stage of iteration n is performed by a pre-addition calculator in parallel with a first stage of iteration n+1, wherein the second stage of iteration n comprises computing an actual value of a root variable, and the first stage of iteration nil comprises a function computing mechanism configured to compute an auxiliary function based on a first value of the root variable and computing the auxiliary function based on a second value of the root variable, the actual value of the root variable being the result of iteration n, and a result from an iteration being used to update one of the root variables;
- and
- rotating root variables using a controller after an iteration of computations is completed and before a succeeding iteration starts.
4 more elements
A network system, comprising:
- a switch fabric;
- a plurality of line cards interconnected by the switch fabric;
- and
- a plurality of MD5 modules, each operably coupled with a line card to perform MD5 digesting, an MD5 module including:
- a variable storage device configured to store root variables;
- a function computing mechanism configured to compute auxiliary functions based on values of a portion of the root variables, a first value corresponding to a root variable not in the portion of the root variables and a second value corresponding to the root variable wherein the actual value of the root variable is an iteration result of a preceding iteration;
- a pre-addition calculator to calculate a sum among three parameters, in parallel with auxiliary function computation performed by the function computing mechanism;
- and
- a post processor to produce an iteration result for an MD5 digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
6 more elements
A network system, comprising:
- a switch fabric;
- a plurality of line cards interconnected by the switch fabric;
- and
- a plurality of message digesting modules, each operably coupled with a line card to perform message digesting, an message digesting module including:
- a variable storage device configured to store root variables;
- a function computing mechanism configured to compute a first set of functions based on a first value corresponding to root variable and a second set of functions based on a second value corresponding to the root variable, wherein the actual value of the root variable is an iteration result of a preceding iteration, both the first set of functions and the second set of functions based on values of a portion of the root variables wherein the portion of the root variables does not include the root variable;
- a pre-addition calculator to calculate a sum among a set of parameters, in parallel with auxiliary function computation performed by the function computing mechanism;
- and
- a post processor to produce an iteration result for a message digesting process based at least in part on output data from the function computing mechanism, the iteration result of the preceding iteration and output data from the pre-addition calculator.
6 more elements
Dependencies are inferred from the claim text.