1. A method of encoding data into a chain reaction code having systematic output symbols and non-systematic output symbols, the method comprising: generating, from the data, a set of input symbols, the input symbols comprising systematic output symbols; computing systematic keys for the set of input symbols; generating, from the set of input symbols and corresponding systematic keys, a plurality of intermediate input symbols encoding the plurality of intermediate input symbols into one or more non-systematic output symbols, wherein one or more intermediate input symbols are encoded into one non-systematic output symbol, wherein each of the one or more non-systematic output symbols is selected from an alphabet of non-systematic output symbols, and wherein each non-systematic output symbol is generated as a function of one or more of the input symbols, wherein any subset of the set of input symbols is recoverable from (i) a predetermined number of non-systematic output symbols, or (ii) a combination of (a) input symbols which are not included in the subset of input symbols that are to be recovered and (b) one or more of the non-systematic output symbols; wherein computing systematic keys for the plurality of input symbols comprises: (i) computing L unique keys D( 0 )-D(Lâˆ’1), wherein L is a predefined number; (ii) constructing a decoding matrix having K columns and L rows, wherein K corresponds to the number of input symbols, and wherein each row corresponds to a function of the key D(j), wherein j is equal to a value between 0 and Lâˆ’1; (iii) initializing a set S to contain no symbols; (iv) applying chain reaction decoding to the decoding matrix to identify an output node to be added to set S; (v) adding the output node to set S; (vi) updating the decoding matrix to remove the output node; (v) comparing size of set S to K; (vi) if the size of set S is less than K, repeating steps (iv)-(v); and (vii) if the size of set S is equal to K, sorting the elements in set S from smallest to largest and using the sorted set S to create the systematic keys.