A method (100) for generating a nonlinear Boolean permutation, the method (100) comprises selecting n number of initial binary Boolean functions for a first n number of components of the nonlinear Boolean permutation (102), iterating converting linear combination of the selected n number of initial binary Boolean functions to a plurality of balanced functions (104), randomly generating a remaining number of components of the nonlinear Boolean permutation (106) and performing a nonlinearity test on the nonlinear Boolean permutation (108) to obtain a nonlinearity parameter, until the nonlinearity parameter meets a predetermined condition.