1. A method to encrypt and decrypt data comprising: providing input data to be encrypted, said input data made up of a plurality of sub-data, each said sub-data comprising a sequence of bits of data; dynamically selecting a plurality of selected encryption parameters such that a different encryption parameter is selected from a plurality of encryption parameters for each round of encryption, wherein dynamically means that a user chooses one or more encryption parameters in each of a plurality of steps in each round by selecting one or more encryption parameters from various options presented during the plurality of steps in each round of encryption; and performing one or more rounds of a combination of data modification, sequence modification and data-sequence modification using the plurality of selected encryption parameters deriving encrypted data; wherein performing data modification comprises performing data modification using a byte-by-byte substitution, performing data modification further comprising arranging said plurality of sub-data into a state matrix, said state matrix comprising said plurality of sub-data ordered in a matrix rectangle; identifying a sub-data from said plurality of sub-data to be modified; identifying one of a plurality of first encryption parameters for the modification, the plurality of first encryption parameters being one of a plurality of substitution-boxes; and replacing said sub-data from an identified first encryption parameter.