原创 关于CRC实际密钥位长度计算问题

2009-12-16 02:10 2874 4 4 分类: MCU/ 嵌入式

根据《菜农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逆向算法。


 


则CRC实际密钥位长度:


设CRCn,对于左移或右移CRC,CRC权值实际密钥位=2^n-2^(n-2).


合计CRC权值实际密钥位=2^(n+1)-2^(n-1)=3*2^(n-1)。


加上初值和出值各2^n,故CRC实际密钥位长度=3*2^(n-1)*2^n*2^n=3*2^(3n-1)>2^(3n)。


 


例如CRC8:


CRC8实际密钥位=3*2^(3*8-1)=3*2^23>2^24。即CRC8的密钥长度3*2^23比自己的3倍24位还长点。


 


例如CRC16:


CRC16实际密钥位=3*2^(3*16-1)=3*2^47>2^48。即CRC16的密钥长度3*2^47比自己的3倍48位还长点。


 


例如CRC32:


CRC32实际密钥位=3*2^(3*32-1)=3*2^95>2^96。即CRC32的密钥长度3*2^95比自己的3倍96位还长点。


 


例如CRC64:


CRC64实际密钥位=3*2^(3*64-1)=3*2^191>2^192。即CRC64的密钥长度3*2^191比自己的3倍192位还长点。


 


例如CRC128:


CRC128实际密钥位=3*2^(3*128-1)=3*2^383>2^384。即CRC128的密钥长度3*2^383比自己的3倍384位还长点。


 


可以看出CRC128与同档次的MD5“单向函数”相比,做为密码(陷门)要强大的多,不知为何人们要抛弃CRC128~~~


菜农一直百思不解...


 


HotPower@126.com  2009.12.15 于雁塔菜地


 


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


 




把 HotPage网址之家 设为首页欢迎访问HotPower的农家乐
 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条