A machine-implemented method of encrypting information, comprising: encrypting one or more blocks of the information by a block cipher based on a first key generator, which is a first value or a first collection of values to which one or more operations are performed to generate another value or set of values from which a first key is generated; updating said first key generator, based on a one-way function after the encrypting of the one or more blocks of the information by said block cipher, to generate a second key generator, which is a second value or a second collection of values to which one or more operations are performed to generate another value or set of values from which a second key is generated, wherein a period of an orbit of the first key generator is larger than the number of possible keys; and encrypting one or more blocks of the information by the block cipher based on the second key generator, therein generating an encrypted form of the information having one or more blocks that were encrypted based on the first key generator and one or more blocks encrypted based on the second key generator; wherein a process, referred to herein as an H process, uses at least some of a current key generator, referred to herein as K H, to derive a key that the block cipher uses to encrypt a plaintext block, represented as H(B 1, K H), H represents the encryption performed by the block cipher used in the H process, the H process updates the key generator to key generator K H, the updated key generator being referred to as K H, key generator K H is used to derive a new key for the block cipher in order to encrypt the second subblock B 2, represented as H ( B 2, K H); the plaintext being any kind of information that has not been encrypted. encrypting one or more blocks of the information by a block cipher based on a first key generator, which is a first value or a first collection of values to which one or more operations are performed to generate another value or set of values from which a first key is generated; updating said first key generator, based on a one-way function after the encrypting of the one or more blocks of the information by said block cipher, to generate a second key generator, which is a second value or a second collection of values to which one or more operations are performed to generate another value or set of values from which a second key is generated, wherein a period of an orbit of the first key generator is larger than the number of possible keys; and encrypting one or more blocks of the information by the block cipher based on the second key generator, therein generating an encrypted form of the information having one or more blocks that were encrypted based on the first key generator and one or more blocks encrypted based on the second key generator; wherein a process, referred to herein as an H process, uses at least some of a current key generator, referred to herein as K H, to derive a key that the block cipher uses to encrypt a plaintext block, represented as H(B 1, K H), H represents the encryption performed by the block cipher used in the H process, the H process updates the key generator to key generator K H, the updated key generator being referred to as K H, key generator K H is used to derive a new key for the block cipher in order to encrypt the second subblock B 2, represented as H ( B 2, K H); the plaintext being any kind of information that has not been encrypted.