根据《菜农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\
文章评论(0条评论)
登录后参与讨论