纵向冗余校验的异或校验和可以简单快速的计算出来,将一个数据块的所有数据字节递归,经过异或选通后即可产生异或校验和。由于算法简单,可以快速简单地计算纵向冗余校验。然而,LRC并不很可靠,多个错误可能相互抵消,在一个数据块内字节顺序的互换根本识别不出来。因此LRC主要用于快速校验很小的数据块儿(如32B)。在射频识别系统中,由于标签的容量一般较小,每次交易的数据量也不大,所以这种算法还是比较适合的。
Set LRC = 0
For each character c in the string
Set LRC = LRC XOR c
end do
虽然简单的纵向奇偶校验只能检测错误,但它可以与附加的错误控制编码(例如横向冗余校验)组合以纠正错误。 横向冗余校验存储在专用的“奇偶校验轨道”上。
每当在数据传输块中发生任何单比特错误,这种二维奇偶校验或“双坐标奇偶校验”时,使接收器能够使用TRC来检测错误发生在哪个字节,以及 LRC准确检测出错误发生的轨道,准确发现哪个位出错,然后通过翻转纠正该位。
国际标准ISO 1155规定,可以通过以下算法在软件中计算字节序列的纵向冗余校验:
它可以表示为“模数为28的所有字节之和的8位二进制补码值”(x AND 0xFF等于x MOD 28)。
许多协议使用基于XOR的纵向冗余校验字节(通常称为块校验字符或BCC),包括串行线路互联网协议(SLIP),IEC 62056-21电表读数标准[1] ,智能卡定义 在ISO / IEC 7816和ACCESS.bus协议中。
这样的8位LRC等效于使用多项式 的循环冗余校验,但是当以这种方式查看时,位流的独立性不太清楚。