龙空技术网

HotPower超级CRC计算器与第三方CRC计算器的比对

雁塔菜农 109

前言:

当前你们对“c语言多项式计算器”大致比较着重,你们都需要剖析一些“c语言多项式计算器”的相关文章。那么小编在网上网罗了一些关于“c语言多项式计算器””的相关内容,希望咱们能喜欢,同学们一起来了解一下吧!

首先声明HotPower超级CRC计算器(以下简称HotWC3)是菜农免费提供的公益教学和开源的CRC计算验证工具,在网上流传已经十数年。

菜农通俗地介绍一下循环冗余校验(Cyclic Redundancy Check, CRC),它是用于数据校验的一种移位算法。

例如数值1、2、3,若用累加和校验的话,求和为6。

但是数值2、1、3,2、3、1等排列的求和也都为6!这样就无法区分数据排列的对错。

而用CRC就可以较好地解决数据校验的问题,这里就不再介绍了,只要记住CRC是非常适合数据校验的。

CRC计算器是专门用于数据校验验证的工具软件,主要有用于CRC计算的按钮操作,其中有填写带校验的数据编辑框,菜农将此简称为“明文”编辑框。还有计算结果的输出。

CRC的算法实际就是CRC多项式,它的数值第三方CRC计算器一般注明“Poly”,菜农简称为“权值”。

HotWC3与第三方CRC计算器名词解释与对照及操作如下图所示:

​第三方CRC计算器多数多项式是固定不变的,只需选择某CRC多项式即可。对应的权值也是固定不变的。这样就只有有限个CRC多项式。

少数第三方CRC计算器和HotWC3权值是可以随意设置的,但HotWC3在权值被改写后,多项式会随之变化,而很少见第三方CRC计算器有如此功能。

HotWC3在改写任何某个CRC成员,其他成员都会随之变化。

HotWC3有多达8个编辑框:

多项式、简写式、明文、密文、权值、初值、出值和结果。

HotWC3的CRC“简写式”是比CRC多项式或权值更完美的数字表达式,它包含了一切完成CRC计算所需的信息。

例如图中的“CRC16L_1021_FFFF_0000”表示:

左移CRC16算法,多项式:CRC16=X16+X12+X5+1。

权值为0x1021,初值为0xFFFF,出值为0x0000

HotWC3目前支持蓝色的27种标准的CRC多项式和红色的HotCRC选项支持的32种自定义CRC多项式并且随意克隆(CRC简写式被改写后,点击“保存完成克隆”)第三方CRC计算器。

如下图所示:

从图中可以看到HotWC3还支持自动生成CRC表格和源码,第三方CRC计算器几乎没有此功能,HotWC3可以选择5种算法:

1.单表+大表​,最常见的256大表格算法。

​2.单表+小表,很少见的16小表格算法。

3.双表+大表,罕见的降低MCU位数的256大表格算法。

4.双表+小表,罕见的降低MCU位数的16小表格算法。

5.移位算法,在不追求运算速度和需要减少空间时的不查表算法。

HotWC3还有一个罕见的独门绝学之功能:逆向(克隆)第三方CRC计算器(即调试跟踪CRC函数的入口和出口)或函数表格数组。

前者只需在第三方CRC计算器上计算四个特定值,用得到的四个CRC校验结果直接逆向(非穷举而是计算)出第三方CRC计算器的CRC简写式(比多项式包含信息多)。

后者只需提供某函数所用的表格(单双表,大表表),直接逆向(非穷举而是计算)出CRC简写式(由于表格与初值和出值无关,故初值和出值都逆向为0)

HotWC3与第三方CRC计算器最大的区别是多了一个“密文”编辑框和“还原”按钮。

由于HotWC3具备CRC逆运算的能力,故可以很轻松地实现:

1.任意CRC碰撞,菜农将其归为“CRC明文碰撞”,即不同的明文相同的结果。

2.CRC初值碰撞,HotWC3独有的碰撞,即不同的初值相同的结果。

3.CRC出值碰撞,HotWC3独有的碰撞,即不同的出值相同的结果。

4.CRC权值碰撞,HotWC3独有的碰撞,即不同的权值相同的结果。

高版本的HotWC3还具备理论上100%破解任意CRC通讯协议的功能,规则见下图:

HotPower超级CRC计算器在网上已经流传十数年​,应用很广,是学习和掌握CRC技术最好的工具之一,它的功能之多是融入了菜农从1990年开始破解CRC32的28年功力的体现,下图的手稿为证:

HotPower超级CRC计算器可以在任何平台下工作,网上在线和本地离线皆可,即使用手机也能操作一切功能,在网上随意都可以找到。

标签: #c语言多项式计算器