A method of encoding data, wherein the data to be encoded is represented as a set of K input symbols stored in an electronically-readable medium, K being an integer greater than one, wherein each of the K input symbols has a value that is from an input symbol alphabet, and wherein the encoded data is representable as a plurality of output symbols, each of which has a value that is from an output symbol alphabet, the method comprising: obtaining at an input the K input symbols in an electronically-readable form, such that each of the K input symbols has an associated position within the K input symbols; determining K systematic keys for the K input symbols, wherein the systematic keys have been generated with a systematic key generator using random numbers generated by a random number generator; generating, from the input symbols, a plurality of intermediate input symbols, each intermediate input symbol having an associated position within the plurality of intermediate input symbols, wherein the generation of the plurality of intermediate input symbols from the plurality of input symbols is performed according to a chain reaction decoding process and using the corresponding systematic keys; determining non-systematic keys for the plurality of intermediate input symbols, wherein the non-systematic keys have been generated with a non-systematic key generator using random numbers generated by said random numbergenerator; and generating output symbols of the plurality of output symbols, wherein generating output symbols of the plurality of output symbols comprises generating K systematic output symbols by passing the K input symbols from the input to a transmit module and generating a number of non-systematic output symbols using chain reaction encoding and having the plurality of intermediate input symbols and the corresponding non-systematic keys as an input, said non-systematic output symbols being output to the transmit module, and wherein any subset of the set of input symbols that will not be acquired by a receiver is recoverable from (i) a predetermined number of non-systematic output symbols that will be acquired or (ii) a combination of (a) input symbols that will be acquired and (b) one or more of the non-systematic output symbols that will be acquired. obtaining at an input the K input symbols in an electronically-readable form, such that each of the K input symbols has an associated position within the K input symbols; determining K systematic keys for the K input symbols, wherein the systematic keys have been generated with a systematic key generator using random numbers generated by a random number generator; generating, from the input symbols, a plurality of intermediate input symbols, each intermediate input symbol having an associated position within the plurality of intermediate input symbols, wherein the generation of the plurality of intermediate input symbols from the plurality of input symbols is performed according to a chain reaction decoding process and using the corresponding systematic keys; determining non-systematic keys for the plurality of intermediate input symbols, wherein the non-systematic keys have been generated with a non-systematic key generator using random numbers generated by said random numbergenerator; and generating output symbols of the plurality of output symbols, wherein generating output symbols of the plurality of output symbols comprises generating K systematic output symbols by passing the K input symbols from the input to a transmit module and generating a number of non-systematic output symbols using chain reaction encoding and having the plurality of intermediate input symbols and the corresponding non-systematic keys as an input, said non-systematic output symbols being output to the transmit module, and generating K systematic output symbols by passing the K input symbols from the input to a transmit module and generating a number of non-systematic output symbols using chain reaction encoding and having the plurality of intermediate input symbols and the corresponding non-systematic keys as an input, said non-systematic output symbols being output to the transmit module, and wherein any subset of the set of input symbols that will not be acquired by a receiver is recoverable from (i) a predetermined number of non-systematic output symbols that will be acquired or (ii) a combination of (a) input symbols that will be acquired and (b) one or more of the non-systematic output symbols that will be acquired.