-
-
[原创]关于学习《加密与解密》中CRC算法的心得
-
发表于:
2007-3-21 17:04
4937
-
CRC以前经常听得过,但具体算法一直不知道,在看《加密与解密》一书中,提到了该算法的实现过程,但看来看去一直不是很明白,最后,通过反复理解,终于明白是怎么一回事,现在将我的心得与有和我一样的困惑的朋友分享一下:
原文描述如下:
1、将寄存器向右边移动一个字节。
2、将刚移出的那个字节与我们的字符串中的新字节进行XOR运算,得出一个指向值表table[0..255]的索引。
3、将索引所指的表值与寄存器做XOR运算。
4、如果数据没有全部处理完,则跳到步骤1。
经过我反复理解后,觉得这样说可能更容易明白一点:
DestString = 需要计算CRC码的字符串
i=为字符串的索引,初始为0.
CRC寄存器=用于保存最终的CRC码的寄存器(可设为EAX或者其它通用寄存器)
1.将CRC寄存器中的位全部初始为1,即mov eax,-1
2.将CRC寄存器中低8位与DestString[i]字符异或,i++,得到一个CRC表的索引
3.根据第2步得到的索引从CRC表中找出相应的值.
4.将CRC寄存器右移8位,然后与第3步得到的值异或,将最终结果放入CRC寄存器
5.循环处理2-4步,直到全部字符处理完毕
最终CRC寄存器中就是字符串的CRC码
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)