Patent ID: 8437470

Claim:
A method of encrypting data, the method comprising: combining a control input derived from a right part of a Feistel-like structure with a transformation input comprising a left part of the Feistel-like structure; splitting, at a control input splitter, the control input, into a plurality of control input sub-blocks; splitting, at a transformation input splitter, the transformation input, into a plurality of transformation input sub-blocks; linearly combining each one of the plurality of control input sub-blocks with a corresponding one of the plurality of transformation input sub-blocks; joining a plurality of results of the linear combining with each other at an output joiner; and outputting a result of the joining, wherein: no bit of the output result comprises a linear combination of bits from the control input and bits from the transformation input; the linearly combining comprises (A(C)×I)⊕C, where C represents the control input sub-block, I represents the transformation input sub-block, and A(C) comprises a matrix depending on C, of size m×m, where m is a size of the control input sub-block, and A(C)×I represents matrix multiplication of A(C) and I; and A ⁡ ( C ) = [ 1 C ⁡ [ 0 ] 0 0 0 1 C ⁡ [ 1 ] 0 0 0 1 C ⁡ [ 2 ] 0 0 0 1 ] × [ 1 0 0 0 C ⁡ [ 1 ] 1 0 0 0 C ⁡ [ 2 ] 1 0 0 0 C ⁡ [ 3 ] 1 ] where C[0 . . . 3] comprise bits comprised in the control input.