Patent ID: 8891763

Claim:
A method of encrypting data by constructing a digital cryptogram by means of a public key algorithm comprising: (a) converting a message to be sent into binary form and formatting it by appending dummy bits as necessary into an integral number r of binary message vectors of length k bits each; (b) for each binary message vector, randomly generating an associated error vector of length n bits, containing s bit errors; (c) generating an associated reversible mapping function for each binary message vector from the associated error vector, wherein the reversible mapping function uses a k bit to k bit scrambling function that is derived from the associated error vector; (d) mapping each binary message vector into a different mapped binary message vector using the associated reversible mapping function; (e) constructing a first generator matrix of a binary code with dimension k with a pre-selected Galois field whose base field is 2, and a Goppa polynomial whose degree is such that the corresponding binary code provides a t error correcting capability by utilising n−k parity bits; (f) constructing a scrambled k×n generator matrix by matrix multiplication, said scrambled generator matrix being the product of a non-singular matrix, said first generator matrix and a first permutation matrix; (g) constructing a reduced echelon k×n generator matrix by randomly selecting k independent columns of the scrambled k×n generator matrix according to a second permutation matrix; (h) encoding each mapped binary message vector by adding rows of said reduced echelon generator matrix according to the 1s in each mapped message vector to form r codeword vectors of length n bits; (i) adding the associated error vector to each codeword vector using modulo 2 arithmetic to form r corrupted codeword vectors; and (j) forming a cryptogram from the r corrupted codeword vectors, wherein each of the steps (a)-(j) are executed by programmable hardware.