看流星社区

 找回密码
 注册账号
查看: 2311|回复: 0

菜鸟学习CRC32算法的一点点小心得

[复制链接]

该用户从未签到

发表于 2013-5-24 09:16:16 | 显示全部楼层 |阅读模式
这几个月刚接触crack,每天都看到前辈高手们的文章里,写些什么CRC校验,于时就在网上找了好多相关的资料,同时也找了加密与解密光盘上的那篇译文,发现,不是写的过于简单,就是写的过于复杂,有的还兜了好几个圈圈,看的俺是一头雾水~~~~~最后,没有办法,就找到的罗大大的汇编源代码,再配合光盘上的那篇文章,得出了CRC32校验的一个流程,不知道我的理解是否正确,如有错误之处,还请大大们指出,小弟不胜感激

首先,生成一个256组的32位码表(用于和运算过程中的CRC值做异或运算.当运算结束后,就不起作用了,我想许多新手都和我一样,最开始都不能理解这个码表的作用是什么,我在这上面也兜了好多圈圈,个人觉得,这个码表的生成公式可以自已写,没必要按照文章上的那个循环得到.)

再次,设4个变量,
1, a 32位的变量,用来存放CRC,要设一个初值.教程里设的是0xffff
2, b 是8位的变量 (用来临时存放需要处理的字节,与下面的c配合使用)
3, c 32位,初值存放需要CRC校验的字符串或文件的第一个字符的内容的首地址
4, d 32位,初值为指向256组码表的首地址

得到需要CRC校验的字符串或文件的长度e
{循环 e 次
把变量c指向的内容附值给b
变量b的变量a的后八位做异或运算,并将结果保存在b
去掉变量a后八位,在其前8位用0填补(也就是 右补8位)
  然后再和码表d的第b项(相当于高级语言里的数组d[b])做异或运算结果存放在a.
c+1(指向下一个字节)
}

再把变量a的值取反,所得的值就是最后的CRC
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-15 22:24

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表