a method comprising the steps of creating a random permutation of data from a data input by executing at least one of a pseudo - random permutation and a pseudo - random function , creating a first data block by combining the random permutation of data with a received second data block and executing an ε - differentially uniform function on the result of the combination , xoring the result of the ε - du function evaluation with a secret key , and reducing the first data block to a first message authentication code .