Reed-Solomon纠错码(RS码)

Reed-Solomon纠错码(RS码)

Reed-Solomon利用范特蒙矩阵或者柯西矩阵的特性来实现纠错码的功能。

Reed-Solomon编码:

把输入数据视为向量D=(D1,D2,…,Dn),编码后数据视为向量(D1,D2,…Dn,C1,C2,…,Cm),RS编码可以看做为如下图的矩阵运算。编码矩阵B必须具有任意子矩阵可逆的特性。

在这里插入图片描述

Reed-Solomon解码:
RS最多能容忍m个数据块被删除,m包括实际数据和冗余数据。数据恢复的过程如下:
(1)假设D1,D4,C2丢失,从编码矩阵中删掉丢失的数据块/编码块对应的行。

在这里插入图片描述

根据上图所示RS编码运算等式,可以得到如下B’以及等式。

在这里插入图片描述

(2)由于B’是可逆的,记B’的逆矩阵为(B’ ^ -1),则B’*(B’^-1)=I单位矩阵。两边左乘B’逆矩阵。

在这里插入图片描述

(3)得到如下原始数据D的计算公式

在这里插入图片描述

有限域:

假设每一个向量元素由8bit组成,那么矩阵相乘后的结果必然要超过8bit的范围,为了解决这个问题,提出有限域的概念。
1.域
一组元素的集合,以及在集合上的四则运算,构成一个域。其中加法和乘法必须满足交换、结合和分配的规律。加法和乘法具有封闭性,即加法和乘法结果仍然是域中的元素。
域中必须有加法单位元和乘法单位元,且每一个元素都有对应的加法逆元和乘法逆元。但不要求域中的0有乘法逆元。
2.有限域
有限域又称为伽罗华域,其仅含有限多个元素的域。GF(2^ w)表示含有2^ w个元素的有限域,那么在计算机中常用的有限域是GF(2^8)
3.单位元
Identity Element,也叫幺元,通常使用e来表示单位元,单位元和其他元素结合时,并不会改变那些元素。
对于二元运算 * ,若a * e=a,e称为右单位元;若e * a=a,e称为左单位元,若a * e=e*a =a,则称e为单位元。
4.逆元
对于二元运算 *,若a * b=e,则a称为b的左逆元素,b称为a的右逆元素。若a * b=b * a=e,则称a为b的逆元,b为a的逆元。
5.本原多项式
域中不可约多项式是不能够进行因子分解的多项式,本原多项式是一种特殊的不可约多项式,当一个域上的本原多项式确定了,这个域上的运算也就确定了。

你可能感兴趣的:(算法,数据结构,网络安全,安全,密码学)