Multiple corruptions and/or erasures in data storage or data communication
systems are corrected. An encoder generates M of parity fields from N
data channels. Each item of the generated parity fields is the result of
simple exclusive-or operations on one item from one or more data fields
and possibly one item from one or more of the other parity fields. A
decoder can regenerate as many as M missing or corrupted fields of either
data or parity using combinations of correct and/or previously corrected
items as inputs using M independent parity equations to solve for and
correct each missing or corrupted item in turn.