Patent ID: 6298136
Filing Date: 2001-10-02
Classification: H04L

Abstract:
A program stored on a computer readable medium for cryptographically converting a digital input data block M into a digital output data block; said program configured to perform the steps of merging a selected part M1 of said digital input data block M with a first digital key K1 to produce a data block B1 which non-linearly depends on said selected part M1 and said first key K1, and deriving said digital output block from said data block B1 and the remaining part of the input data block M; wherein said merging step is performed by executing a non-linear function g for non-linearly merging said selected part M1 and said first key K1 in a single step; wherein said merging step comprises the steps of splitting said selected part M1 in a first plurality n of sub-blocks m.sub.0, . . . , m.sub.n-1 of substantially equal length; splitting said first key K1 in said first plurality n of sub-keys k.sub.0, . . . , k.sub.n-1, substantially having equal length, the sub-key k.sub.i corresponding to the sub-block m.sub.i, for i=0 to n-1; separately processing each of said sub-blocks m.sub.i by executing for each of said sub-blocks m.sub.1 a same non-linear function h for non-linearly merging a sub-block b.sub.1 derived from said sub-block m.sub.i with said corresponding sub-key k.sub.1 in one, sequentially, inseparable step and producing said first plurality of output sub-blocks h(b.sub.i, k.sub.i); and combining sub-blocks t.sub.i derived from said first plurality of said output sub-blocks h(b.sub.i, k.sub.i) to form said data block B1; and wherein said function h(b.sub.i, k.sub.i) is defined by:h (b.sub.i, k.sub.i) = (b.sub.i .multidot. k.sub.i).sup.-1, if b.sub.i .noteq. 0, k.sub.i .noteq. 0, and b.sub.i .noteq. k.sub.i h (b.sub.i, k.sub.i) = (k.sub.i).sup.-2, if b.sub.i = 0 h (b.sub.i, k.sub.i) = (b.sub.i).sup.-2, if k.sub.i = 0 h (b.sub.i, k.sub.i) = 0 if b.sub.i = k.sub.i,where the multiplication and inverse operations are predetermined Galois Field multiplication and inverse operations.