Cryptography Reference
In-Depth Information
1. Compute a permutation of numbers 0
,...,
255 based on the decimal places
of
π
. Let this permutation be
S
0
,...,S
255
.
2. Pad the text with
i
bytes of value
i
such that its length is a multiple of 16.
(For example, if the text is 6 bytes long, you append 10 bytes of numerical
value 10.) The bytes of the text thus created are called
T
i
.
3. Append a 16-byte checksum to the text.
4. Consider a group of 48 bytes:
X
0
,...,X
47
. Initialize
X
0
,...,X
15
to 0 and
set
X
i
+
32
=
X
i
+
16
=
T
i
for
i
=
0
,...,
15.
Set
t
0.
5. Compute new
X
i
according to the following symbolic C program:
=
for(j=0; j < 17; ++j)
{
for(k=0; k < 47; ++k) {t = X
k
^S
t
;X
k
= t;}
t += j; t &= 0xff;
}
6. Allocate the next 16 bytes
T
i
to
X
16
,...,X
31
and compute
X
i
+
32
=X
i
^X
i
+
16
(i=0,...,15).
Go back to Point 5 where the old value of
t
is reused.
7. Once all
T
i
are used up,
X
0
,...,X
15
form the 128-bit hash value.
Figure 6.3:
Computing the MD2 one-way hash function.
•
RIPE-MD160
: This algorithm is an integral part of the European project
RIPE and is also based on MD4. RIPE-MD160 creates a 160-bit hash
value. Together with SHA-1, it is currently thought to be one of the
algorithms against which no practically effective attacks are known. An
implementation together with a description can be found on the Web site.
RIPE-MD160 didn't gain acceptance versus SHA-1.
•
SHA-1
: SHA stands for 'Secure Hash Algorithm'. This function cre-
ates 160-bit hash values. It was developed jointly by the NIST and the
NSA in 1993 and published in 1994. One year later, the NSA submit-
ted an improved version without stating any reasons. This new version