A method of employing two or more stages of multi-stage encoding to encode data for transmission from a transmitter to at least one receiver over an erasure communications channel, the method comprising: generating, during a first encoding stage, a plurality of redundant symbols from an ordered set of input symbols representing the data to be encoded for transmission, wherein the redundant symbols add redundant information in such a way that recovery of the ordered set of input symbols is possible in the face of erasures; generating, during a second encoding stage, a set of output symbols, wherein each output symbol is derived from a different combination of a subset of a collection comprising the plurality of redundant symbols and the ordered set of input symbols, wherein generating the set of output symbols comprises employing a dynamic encoder to generate the set of output symbols using the plurality of redundant symbols, the ordered set of input symbols, and a plurality of distinct dynamic keys, and wherein a dynamic key generator has generated a dynamic key for each output symbol to be generated by the dynamic encoder, wherein the number of distinct dynamic keys that can be generated with the dynamic key generator is only limited by the key resolution, each output symbol having an associated weight representing the number of symbols from the plurality of redundant symbols and the ordered set of input symbols used to generate that output symbol, wherein the weights of the output symbols in the plurality of output symbols are distributed in a way to minimize the number of operations needed to regenerate the ordered set of input symbols from the output symbols obtained from the multi-stage encoding; and transmitting at least some of the set of output symbols over the erasure communications channel to at least one receiver. generating, during a first encoding stage, a plurality of redundant symbols from an ordered set of input symbols representing the data to be encoded for transmission, wherein the redundant symbols add redundant information in such a way that recovery of the ordered set of input symbols is possible in the face of erasures; generating, during a second encoding stage, a set of output symbols, wherein each output symbol is derived from a different combination of a subset of a collection comprising the plurality of redundant symbols and the ordered set of input symbols, wherein generating the set of output symbols comprises employing a dynamic encoder to generate the set of output symbols using the plurality of redundant symbols, the ordered set of input symbols, and a plurality of distinct dynamic keys, and wherein a dynamic key generator has generated a dynamic key for each output symbol to be generated by the dynamic encoder, wherein the number of distinct dynamic keys that can be generated with the dynamic key generator is only limited by the key resolution, each output symbol having an associated weight representing the number of symbols from the plurality of redundant symbols and the ordered set of input symbols used to generate that output symbol, wherein the weights of the output symbols in the plurality of output symbols are distributed in a way to minimize the number of operations needed to regenerate the ordered set of input symbols from the output symbols obtained from the multi-stage encoding; and transmitting at least some of the set of output symbols over the erasure communications channel to at least one receiver.