打印
[CRC可逆]

CRC不可逆的“真谛”

[复制链接]
1885|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2012-10-25 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据《菜农CRC可逆定理》:
在任意CRC多项式对应的CRC算法中,当CRC多项式满足一定条件时,该CRC移动方向上
可能存在CRC的逆向算法,CRC逆向算法确保从CRC正向算法的运算结果即CRC校验值中
逆算出原始输入时的待校验信息。
任意CRC多项式字符串可逆条件判别:
CRC多项式字符串内出现“+1”时存在CRC逆向算法,不出现“+1”时不存在CRC逆向算法。
任意CRC多项式数字权值可逆条件判别:
若将CRC多项式对应的数字值称为CRC权值,则有具体CRC移动方向的判别:
对于左移CRC运算,CRC权值为奇数时存在CRC逆向算法,偶数时不存在CRC逆向算法。
对于右移CRC运算,CRC权值为负数时存在CRC逆向算法,正数时不存在CRC逆向算法。

给出CRC4表达式:左移CRC4=X4+X3+X2+X,初值=0,出值=0
对应的CRC4简写:CRCL4_E_0_0
根据《菜农CRC可逆定理》:CRC4权值可逆=0xF,CRC4权值不可逆=0xE,
//CRC位域8表(大端):
const unsigned char CRCL4_E_Table[16] = {//此表不可逆
  0x0,0xE,0x2,0xC,0x4,0xA,0x6,0x8,0x8,0x6,0xA,0x4,0xC,0x2,0xE,0x0
};

可以看出0x1,0x3,0x5,0x7,0x9,0xB,0xD,0xF这8个数据在表中(CRC[明文]对应的密文)从未出现
那么久意味着0~F这16个明文只对应0x0,0xE,0x2,0xC,0x4,0xA,0x6,0x8这8个密文。
发生了一半的CRC碰撞,即每两个明文对应一个密文。

给出CRC4表达式:右移CRC4=X4+X3+X2+X,初值=0,出值=0
对应的CRC4简写:CRCR4_7_0_0
根据《菜农CRC可逆定理》:CRC4权值可逆=0xF,CRC4权值不可逆=0x7,
//CRC位域8表(小端):
const unsigned char CRCR4_7_Table[16] = {//此表不可逆
  0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x7,0x6,0x5,0x4,0x3,0x2,0x1,0x0
};

可以看出0x8,0x9,0xA,0xB,0xC,0xD,0xE,0xF这8个数据在表中(CRC[明文]对应的密文)从未出现
那么久意味着0~F这16个明文只对应0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7这8个密文。
发生了一半的CRC碰撞,即每两个明文对应一个密文。

故我们可以给出CRC不可逆的“真谛”:
在CRCn中(n=4,...128,...1024...),其CRC位域8表中元素的排列若属于全排列(2^n)!的一组子排列,
那么此CRCn的权值必然是可逆的,即满足《菜农CRC可逆定理》中对可逆的定义。
否则此CRCn的权值必然是不可逆的,即不满足《菜农CRC可逆定理》中对可逆的定义。而且其排列一定
是全排列(2^n)!的一组子排列的一半。此时发生“CRC碰撞”,故CRC不可逆、



菜农HotPower@126.com
2009.12.15 于雁塔菜地

●█〓██▄▄▄▄▄▄ ●●●●●●→ ''''╭WWWW╮
▄▅██████▅▄▃▂ 传播非典灌水四方 ( ●_●)
███天█马█行█空████ '''',,,;,;,;'''/▇\''
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤ 群魔乱舞见阳光/MMMM\

相关帖子

沙发
cgd| | 2012-10-25 21:16 | 只看该作者
抢沙发了

使用特权

评论回复
板凳
yinhaix| | 2015-5-25 14:47 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

506

粉丝