An apparatus for recovering data in a RAID 6 data storage system, comprising: a controller for recovering data in the case of a single or double failures of N partial data blocks generated by dividing the data where N is a natural number greater than 1, the controller recovering the data by using first parity data generated by performing an XOR operation on symbols acquired from the N partial data blocks, and by using second parity data generated by, in a Galois field, weighting the symbols acquired from the N partial data blocks by means of a Galois field product computation table included in the controller for performing Galois field product computation, and by performing an XOR operation on the weighted symbols, wherein the Galois field product computation table includes first search key data, second search key data, and data elements where each data element includes a product of the first search key data and the second search key data for each pair of the first search key data and the second search key data, the controller recovers a failed partial data block by searching the Galois field product computation table using the first search key data and the second search key data, and the first search key data includes symbol values, the second search key data including a weighting value set and an inversed weighting value set, the weighting value set including weighting values each assigned to one of the N partial data blocks and different from each other, the weighting value set being closed under addition in the Galois field, the inversed weighting value set including weighting values each being a multiplicative inverse of one of the weighting values included in the weighting value set, wherein the controller recovers the data in the case of double failures of the N partial data blocks by using weighting values included in the inversed weighting value set of the Galois field product computation table, and a weighting value for recovering a failed partial data block in the case of a single failure of the N partial data blocks is a multiplicative inverse of the weighting value assigned to the failed partial data block; and a weighting value for recovering failed partial data blocks in the case of double failures of the N partial data blocks is a multiplicative inverse of a result of an XOR operation performed on two weighting values assigned to the failed partial data blocks, characterized in that at least a weighting value included in the computation table for recovering a failed partial data block in the case of a single failure of the N partial data blocks is also used as the weighting value for recovering failed partial data blocks in the case of double failures of the N partial data blocks. a controller for recovering data in the case of a single or double failures of N partial data blocks generated by dividing the data where N is a natural number greater than 1, the controller recovering the data by using first parity data generated by performing an XOR operation on symbols acquired from the N partial data blocks, and by using second parity data generated by, in a Galois field, weighting the symbols acquired from the N partial data blocks by means of a Galois field product computation table included in the controller for performing Galois field product computation, and by performing an XOR operation on the weighted symbols, wherein the Galois field product computation table includes first search key data, second search key data, and data elements where each data element includes a product of the first search key data and the second search key data for each pair of the first search key data and the second search key data, the controller recovers a failed partial data block by searching the Galois field product computation table using the first search key data and the second search key data, and the first search key data includes symbol values, the second search key data including a weighting value set and an inversed weighting value set, the weighting value set including weighting values each assigned to one of the N partial data blocks and different from each other, the weighting value set being closed under addition in the Galois field, the inversed weighting value set including weighting values each being a multiplicative inverse of one of the weighting values included in the weighting value set, wherein the controller recovers the data in the case of double failures of the N partial data blocks by using weighting values included in the inversed weighting value set of the Galois field product computation table, and a weighting value for recovering a failed partial data block in the case of a single failure of the N partial data blocks is a multiplicative inverse of the weighting value assigned to the failed partial data block; and a weighting value for recovering failed partial data blocks in the case of double failures of the N partial data blocks is a multiplicative inverse of a result of an XOR operation performed on two weighting values assigned to the failed partial data blocks, characterized in that at least a weighting value included in the computation table for recovering a failed partial data block in the case of a single failure of the N partial data blocks is also used as the weighting value for recovering failed partial data blocks in the case of double failures of the N partial data blocks.