http://www.hotpower.net.cn/UploadFiles/200612222511409.htm
CRC8“洞中探密”——三角及冗余校验密码技术.html应用(5530字)hotpower[23次]2004-9-5 13:26:09
CRC8“洞中探密”——三角及冗余校验密码技术.html应用
hotpower 发表于 2004-4-5 15:32 侃单片机 ←返回版面 举报该贴
CRC8“洞中探密”——三角及冗余校验密码技术.html应用
注:本文的全部运算可用<三角及冗余校验密码技术.html>调试
本文只以CRC8为例,CRC16~CRC64完全一样!
本文是
CRC8“深山探宝”——三角及冗余校验密码技术.html应用
的序集。主要论述CRC8在加密及解密方面的应用。
大家知道,CRC主要是由初值、权、原码三个基本“元素”构成。
采用响应的CRC算法将会得到一个CRC结果。
例:采用右移CRC8时
初值=00H 权=18H 原码=88H
则:CRC结果=4EH
初值=00H 权=19H 原码=88H
则:CRC结果=4EH
例:采用左移CRC8时
初值=00H 权=18H 原码=88H
则:CRC结果=C3H
初值=00H 权=98H 原码=88H
则:CRC结果=C3H
从上可以看出,当采用右移CRC8时,与D0无关。
当采用左移CRC8时,与D7无关。
所以可以得出一个“结论”——CRC具有多值“特性”。
例:采用右移CRC8时
初值=12H 权=18H 原码=88H
则:CRC结果=6FH
初值=21H 权=18H 原码=88H
则:CRC结果=33H
例:采用左移CRC8时
初值=12H 权=18H 原码=88H
则:CRC结果=E2H
初值=21H 权=18H 原码=88H
则:CRC结果=74H
从上可以看出,当CRC的初值不同时,其CRC结果也不同。
当采用左移CRC8时,与D7无关。
所以可以得出一个“结论”——CRC具有多态“特性”。
CRC的“多值多态特性”主要是由24位的CRC运算得到8位的CRC结果产生的。
正是这个“特性”,就使得CRC密码可以“群魔乱舞”。
本文只讲述CRC加密和解密的最基本的原理...
在密码学中,主要由加密钥、解密钥、明文、密文等构成。
而在CRC密码中,一般采用一个密钥,及加密钥就是解密钥,这样较方便些,
但加密和解密的算法不同,且是可逆的。
CRC的密钥实际上是由初值和权两部分组成的。
而CRC的密文实际上就是用CRC的密钥对CRC的原文进行CRC加密运算得到的CRC结果。
在进行CRC解密时,就是用CRC的密钥对CRC的密文进行CRC解密运算得到的CRC结果。
例如:明文(HEX码)为0123456789ABCDEF.
设CRC密钥为1234H(初值=12H,权=34H)则:
采用右移CRC8时,密文为:ECC746D28E5F180A.
采用左移CRC8时,密文为:34F9734213BEAD3C.
设CRC密钥为0123H(初值=01H,权=23H)则:
采用右移CRC8时,密文为:0001AA8900769910.
采用左移CRC8时,密文为:009FA021FFDC6CD6.
为了使加密更可靠,一般会将CRC密钥加长,以破坏CRC的“继承”关系,防止解密者
利用CRC的“继承”关系从密文的任意位置解密,逼迫他从头解密。
这样只有知道了CRC密钥,才能根据CRC密文解密出CRC原文。
例:设CRC密钥为123456H,可用加长的56H依次异或上例中的密文
采用右移CRC8时,未加长的密文为:ECC746D28E5F180A.(未异或56H时,及CRC密钥为
1234H)
加长的密文为:BA911084D8094E5C.(异或56H时,及CRC密钥为
123456H)
其他就不举例了。解密和加密基本相同。。。
从本文中可以看出:
若采用CRC8 时,CRC8 的密钥为24位。
若采用CRC16时,CRC16的密钥为48位。
若采用CRC32时,CRC32的密钥为96位。
若采用CRC64时,CRC64的密钥为192位。
所以,CRC加密和解密在MCU中是很容易实现的。
文章评论(0条评论)
登录后参与讨论