crc系列瞎谈 雁塔菜农 发表于 2005-5-31 0:51:00 |
crc系列瞎谈-(精)(2298字)hotpower2004-9-5 13:12:31[128次]
大家都用标准的CRC16(左移),我偏要右移才开心 HotPower 发表于 2004-7-17 15:25 侃单片机 ←返回版面 举报该贴
unsigned int crc16r(unsigned int crcword, unsigned int crc) { unsigned char i; for(i = 0; i < 16; i++){ if(((crc ^ crcword ) & 0x0001) == 0) crc >>= 1; else{ crc ^= 0x810;//0x0810;//CRC=X16+X12+X5+1 crc >>= 1; crc |= 0x8000; } crcword >>= 1; } return crc; }
本程序可用工具 http://www.21icbbs.com/club/bbs/ShowAnnounce.asp?v=&ID=900064 http://www.21icbbs.com/club/bbs/showEssence.asp?id=4611&page=1 http://www.21icbbs.com/club/bbs/showEssence.asp?id=4611&page=2 进行校验
系统注:本文被午夜听风加精.
相关帖子>>>: crc系列瞎谈-(精)
- “三角恋爱”之金屋藏娇(1864字)hotpower[29次]2004-9-5 13:15:50
“三角恋爱”之金屋藏娇 HotPower 发表于 2004-5-8 01:09 侃单片机 ←返回版面 举报该贴
在本主题的前2个姊妹篇中,可以很清楚地看到:
CRC密码主要是由初值、权、原码三个基本“元素”构成,而“群魔乱舞”又增加了运算方 向。 即: CRC密码 = f(原码,初值,权,方向)= f(原码,密钥) CRC原码 = F(密码,初值,权,方向)= F(密码,密钥) 注:f()与F()互为反函数。
所以,CRC自带“天生秘籍”——密钥(初值,权,方向) 这真是“大自然带给CRC密码学最好的礼物”,一般函数很难找到。
三角密码主要根据特殊直角三角形得出,其特点是可以产生“裂变”,即单字节数可产生 256个 不重复的双字节数。 若将其“聚合”就会演变为单向函数,这主要是保护密钥不被反推。 这样,运算的中间结果就可被“金屋藏娇”。
例:(只举基本原理)
设密钥为1234H. 分别对12H和34H查《三角恋爱密码表》得出806EH和82F4H.(注意:806EH<82F4H."<"就隐藏 了左移方向) 再将806EH和82F4H异或得029AH.(02H可做CRC初值,9AH可做CRC权)
设密钥为3412H. 分别对34H和12H查《三角恋爱密码表》得出82F4H和806EH.(注意:82F4H>806EH.">"就隐藏 了右移方向) 再将82F4H和806EH异或得029AH.(02H可做CRC初值,9AH可做CRC权)
故可看出,1234H和3412H由于异或关系,其结果(初值,权)是一样的。(单向函数——给敌 人“挖坑”) 但内藏的“娇娃”——CRC密码的运算方向是不一样的。 方向的不同就意味着运算方法的不同!!!(这正是CRC密码的最大亮点和隐蔽之处) 若运算方法都不知还能谈什么“解密”吗?
当然,这里我只举了基本原理,应用肯定更为复杂。。。 而且,“金屋”里不止藏了“方向”这一个娇娃。。。
- 《三角恋爱密码表》及三角变换 (40204字)hotpower[27次]2004-9-5 13:17:16
《三角恋爱密码表》及三角变换 HotPower 发表于 2004-5-1 19:26 侃单片机 ←返回版面 举报该贴
写真集中的《三角恋爱》是《深山探宝》和《洞中探密》的“姊妹篇”。
《三角恋爱》主要由海誓山盟、金屋藏娇、过河拆桥、爱情结晶、破镜重圆和子孙满堂等部 分组成。
先给个《三角恋爱密码表》吧
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 8002 0003 8006 0008 800C 000F 8014 0018 801E 0023 802A 0030 8038 003F 8048 0050 01 805A 0063 806E 0078 8084 008F 809C 00A8 80B6 00C3 80D2 00E0 80F0 00FF 8110 0120 02 8132 0143 8156 0168 817C 018F 81A4 01B8 81CE 01E3 81FA 0210 8228 023F 8258 0270 03 828A 02A3 82BE 02D8 82F4 030F 832C 0348 8366 0383 83A2 03C0 83E0 03FF 8420 0440 04 8462 0483 84A6 04C8 84EC 050F 8534 0558 857E 05A3 85CA 05F0 8618 063F 8668 0690 05 86BA 06E3 870E 0738 8764 078F 87BC 07E8 8816 0843 8872 08A0 88D0 08FF 8930 0960 06 8992 09C3 89F6 0A28 8A5C 0A8F 8AC4 0AF8 8B2E 0B63 8B9A 0BD0 8C08 0C3F 8C78 0CB0 07 8CEA 0D23 8D5E 0D98 8DD4 0E0F 8E4C 0E88 8EC6 0F03 8F42 0F80 8FC0 0FFF 9040 1080 08 90C2 1103 9146 1188 91CC 120F 9254 1298 92DE 1323 936A 13B0 93F8 143F 9488 14D0 09 951A 1563 95AE 15F8 9644 168F 96DC 1728 9776 17C3 9812 1860 98B0 18FF 9950 19A0 0A 99F2 1A43 9A96 1AE8 9B3C 1B8F 9BE4 1C38 9C8E 1CE3 9D3A 1D90 9DE8 1E3F 9E98 1EF0 0B 9F4A 1FA3 9FFE 2058 A0B4 210F A16C 21C8 A226 2283 A2E2 2340 A3A0 23FF A460 24C0 0C A522 2583 A5E6 2648 A6AC 270F A774 27D8 A83E 28A3 A90A 2970 A9D8 2A3F AAA8 2B10 0D AB7A 2BE3 AC4E 2CB8 AD24 2D8F ADFC 2E68 AED6 2F43 AFB2 3020 B090 30FF B170 31E0 0E B252 32C3 B336 33A8 B41C 348F B504 3578 B5EE 3663 B6DA 3750 B7C8 383F B8B8 3930 0F B9AA 3A23 BA9E 3B18 BB94 3C0F BC8C 3D08 BD86 3E03 BE82 3F00 BF80 3FFF C080 4100
注:这个表可不是我用手编辑的,它可是由三角密码算法自动生成的。所以,此表决无“笔 误”之嫌!!!
三角变换: 这是一种“单向函数”,主要是加密密钥之用。 例: 8位密钥为18H时 则18H经过三角变换即查《三角恋爱密码表》或用三角变换公式会得到80B6H. 再将其高8位与低8位进行异或运算“压缩”成36H. 请看下表:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 82 03 86 08 8C 0F 94 18 9E 23 AA 30 B8 3F C8 50 01 DA 63 EE 78 04 8F 1C A8 36 C3 52 E0 70 FF 91 21 02 B3 42 D7 69 FD 8E 25 B9 4F E2 7B 12 AA 3D DA 72 03 08 A1 3C DA 76 0C AF 4B E5 80 21 C3 63 FC A4 44 04 E6 87 22 CC 68 0A B1 5D FB A6 4F F5 9E 39 EE 96 05 3C E5 89 3F E3 88 3B EF 9E 4B FA A8 58 F7 B9 69 06 1B CA 7F 22 D6 85 4E F2 A5 68 11 DB 84 33 F4 BC 07 66 2E D3 95 59 01 C2 86 48 0C CD 8F 4F F0 D0 90 08 52 12 D7 99 5D 1D C6 8A 4C 30 F9 A3 6B 2B 1C C4 09 8F 76 3B ED D2 99 4A 3F E1 D4 8A 78 28 E7 C9 B9 0A 6B 59 0C F2 A7 94 7F 24 12 FF A7 8D 75 21 06 EE 0B D5 BC 61 78 14 2E CD E9 84 A1 40 63 03 DC C4 E4 0C 87 A6 43 6E 0A 28 D3 FF 96 8B A3 59 71 15 02 3B 0D D1 C8 E2 94 89 A2 51 46 78 6C 1D 10 20 CF C1 D1 0E E0 F1 85 9B A8 BB B1 4D 5B 55 6C 67 7F 07 00 09 0F 13 19 24 23 2F 33 30 35 3B 3D 3C 3F 3F C0 40 41
若36H再与原码18H进行异或运算后,会得到2EH 请看下表:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00 82 02 84 0B 88 0A 92 1F 96 2A A0 3B B4 32 C6 5F 01 CA 72 FC 6B 10 9A 0A BF 2E DA 48 FB 6C E2 8F 3E 02 93 63 F5 4A D9 AB 03 9E 67 CB 51 39 86 10 F4 5D 03 38 90 0E E9 42 39 99 7C DD B9 1B F8 5F C1 9A 7B 04 A6 C6 60 8F 2C 4F F7 1A B3 EF 05 BE D2 74 A0 D9 05 6C B4 DB 6C B7 DD 6D B8 C6 12 A0 F3 04 AA E7 36 06 7B AB 1D 41 B2 E0 28 95 CD 01 7B B0 E8 5E 9A D3 07 16 5F A1 E6 2D 74 B4 F1 30 75 B7 F4 33 8D AE EF 08 D2 93 55 1A D9 98 40 0D C4 B9 73 28 E7 A6 92 4B 09 1F E7 A9 7E 46 0C DC A8 79 4D 10 E3 B4 7A 57 26 0A CB F8 AE 51 03 31 D9 83 BA 56 0D 26 D9 8C A8 41 0B 65 0D D3 CB A0 9B 7B 5E 3C 18 FA D8 BF 61 7A 5B 0C 47 67 81 AD CE ED 15 38 5E 42 69 92 BD D8 CC F4 0D 01 19 30 47 5D 77 87 91 A0 B5 C7 CB FC 12 1F 0E 0E 00 10 67 78 4C 5E 57 AA B3 BC 86 8C 93 EA EE E6 0F E3 E8 D6 D0 DB C6 C6 C2 C3 C4 C6 C4 C3 3D BE BE
- crc8r(),crc16r()(2140字)hotpower[33次]2004-9-5 13:19:33
unsigned char crc8r(unsigned char crcbyte) { unsigned char i,crc; crc = 0; for(i = 0; i < 8; i++) { if(((crc ^ crcbyte) & 0x01) == 0) crc >>= 1; else{ crc ^= 0x18;//0x18;//CRC=X8+X5+X4+1 crc >>= 1; crc |= 0x80; } crcbyte >>= 1; } return crc; }
unsigned int crc16r(unsigned int crcword, unsigned int crc) { unsigned char i; for(i = 0; i < 16; i++){ if(((crc ^ crcword ) & 0x0001) == 0) crc >>= 1; else{ crc ^= 0x810;//0x0810;//CRC=X16+X12+X5+1 crc >>= 1; crc |= 0x8000; } crcword >>= 1; } return crc; }
- crc校验51汇编实验源程序 (32512字)hotpower[20次]2004-9-5 13:21:55
crc校验51实验源程序 HotPower 发表于 2004-4-27 09:35 侃单片机 ←返回版面 举报该贴
CRC EQU 30H CRCH EQU 31H CRCL EQU 32H DATABIT BIT P1.0 ORG 0000H START: LJMP MAIN MAIN: MOV SP,#40H ;8位静态字节循环冗余码校验程序 MOV CRC,#00H MOV B,#7;7字节CRC循环冗余码校验 MOV R0,#80H MOV R1,#88H MOV DPTR,#TABLE_DEMO ; MOV DPTR,#TABLE_1400000594AE6801 TABLE_LOOP: MOV A,B MOVC A,@A+DPTR MOV @R0,A INC R0 LCALL DO_CRC MOV @R1,CRC INC R1 DJNZ B,TABLE_LOOP MOV A,B MOVC A,@A+DPTR MOV @R0,A MOV @R1,CRC ;发送方8位动态循环冗余码校验程序 MOV CRC,#00H MOV B,#7;7*8=56位CRC循环冗余码校验 MOV R0,#90H MOV R1,#98H MOV DPTR,#TABLE_96000005949C6F01 TABLE_NEXT1: MOV A,B MOVC A,@A+DPTR MOV @R0,A INC R0 MOV R7,#08H TABLE_REP1: RRC A MOV DATABIT,C;发送1位数据 LCALL BITCRC;发送1位动态数据循环冗余码校验 DJNZ R7,TABLE_REP1 MOV @R1,CRC INC R1 DJNZ B,TABLE_NEXT1 MOV A,B MOVC A,@A+DPTR MOV @R0,A MOV @R1,CRC ;接收方8位动态循环冗余码校验程序 MOV CRC,#00H MOV B,#7;7*8=56位CRC循环冗余码校验 MOV R0,#0A0H MOV R1,#0A8H MOV DPTR,#TABLE_5800000599602701 TABLE_NEXT2: MOV A,B MOVC A,@A+DPTR MOV @R0,A INC R0 MOV R7,#08H TABLE_REP2: MOV C,ACC.0 MOV DATABIT,C MOV C,DATABIT;接收1位数据 LCALL BITCRC;接收1位动态数据循环冗余码校验 RRC A DJNZ R7,TABLE_REP2 MOV @R1,CRC INC R1 DJNZ B,TABLE_NEXT2 MOV A,B MOVC A,@A+DPTR MOV @R0,A MOV @R1,CRC ;发送方16位动态循环冗余码校验程序 MOV CRCL,#00H MOV CRCH,#00H MOV B,#8;6*8=48位CRC循环冗余码校验 MOV R0,#0C0H MOV R1,#0D0H MOV DPTR,#TABLE_WORDCRC0; TABLE_NEXT3: CLR A MOVC A,@A+DPTR INC DPTR MOV @R0,A INC R0 INC R0 MOV R7,#08H TABLE_REP3: RRC A MOV DATABIT,C;发送1位数据 LCALL WORDCRC;发送1位动态数据循环冗余码校验? DJNZ R7,TABLE_REP3 MOV @R1,CRCH INC R1 MOV @R1,CRCL INC R1 DJNZ B,TABLE_NEXT3 ;发送方16位动态循环冗余码校验程序 MOV CRCL,#00H MOV CRCH,#00H MOV B,#8;6*8=48位CRC循环冗余码校验 MOV R0,#0E0H MOV R1,#0F0H MOV DPTR,#TABLE_WORDCRC1; TABLE_NEXT4: CLR A MOVC A,@A+DPTR INC DPTR MOV @R0,A INC R0 INC R0 MOV R7,#08H TABLE_REP4: RRC A MOV DATABIT,C;发送1位数据 LCALL WORDCRC;发送1位动态数据循环冗余码校验 DJNZ R7,TABLE_REP4 MOV @R1,CRCH INC R1 MOV @R1,CRCL INC R1 DJNZ B,TABLE_NEXT4 SJMP $ ;8位静态字节循环冗余码校验程序 DO_CRC: PUSH ACC PUSH B PUSH ACC MOV B,#8 CRC_LOOP: XRL A,CRC RRC A MOV A,CRC JNC ZERO XRL A,#18H;CRC=X8+X5+X4+1 ZERO: RRC A MOV CRC,A POP ACC RR A PUSH ACC DJNZ B,CRC_LOOP POP ACC POP B POP ACC RET ;8位动态按位循环冗余码校验程序 BITCRC: ;1位需21uS PUSH PSW ;1位需17uS ;56位需56*17=952uS(1112uS) PUSH ACC RLC A XRL A,CRC RRC A MOV A,CRC JNC BITCRC_ZERO XRL A,#18H;CRC=X8+X5+X4+1 BITCRC_ZERO: RRC A MOV CRC,A POP ACC POP PSW RET ;16位动态按位循环冗余码校验程序 WORDCRC: ;1位需21uS PUSH PSW ;1位需17uS ;56位需56*17=952uS(1112uS) PUSH ACC RLC A XRL A,CRCL RRC A MOV F0,C MOV A,CRCH JNC WORDCRC_ZERO_H XRL A,#08H;CRC=X16+X12+X5+1 WORDCRC_ZERO_H: RRC A MOV CRCH,A MOV A,CRCL JNB F0,WORDCRC_ZERO_L XRL A,#10H;CRC=X16+X12+X5+1 WORDCRC_ZERO_L: RRC A MOV CRCL,A POP ACC POP PSW RET TABLE_1400000594AE6801: ;CRC 14 00000594AE68 01 DB 014H,000H,000H,005H,094H,0AEH,068H,001H TABLE_96000005949C6F01: ;CRC 96 000005949C6F 01 DB 096H,000H,000H,005H,094H,09CH,06FH,001H TABLE_5800000599602701: ;CRC 58 000005996027 01 DB 058H,000H,000H,005H,099H,060H,027H,001H TABLE_66000000FBC52B01: ;CRC 66 000000FBC52B 01 DB 066H,000H,000H,000H,0FBH,0C5H,02BH,001H TABLE_E6000000FBD8B301: ;CRC E6 000000FBD8B3 01 DB 0E6H,000H,000H,000H,0FBH,0D8H,0B3H,001H TABLE_DEMO: ;CRC 2C 0123456789AB CD ; DB 02CH,001H,023H,045H,067H,089H,0ABH,0CDH ;CRC FB 0123456789CD AB ; DB 0FBH,001H,023H,045H,067H,089H,0CDH,0ABH ;CRC ED 0103456789AB CD ; DB 0EDH,001H,003H,045H,067H,089H,0ABH,0CDH ;CRC C0 0301456789AB CD DB 0C0H,003H,001H,045H,067H,089H,0ABH,0CDH ;CRC E3 2301456789AB CD ; DB 0E3H,023H,001H,045H,067H,089H,0ABH,0CDH ;CRC EA 0123456789AB DC ; DB 0EAH,001H,023H,045H,067H,089H,0ABH,0DCH ;CRC FE 8023456789AB CD ; DB 0FEH,080H,023H,045H,067H,089H,0ABH,0CDH ;CRC EF 1023456789AB CD ; DB 0EFH,010H,023H,045H,067H,089H,0ABH,0CDH ;CRC F2 123456789ABC D0 ; DB 0F2H,012H,034H,056H,078H,09AH,0BCH,0D0H ;CRC 84 8023456789AB CF ; DB 084H,080H,023H,045H,067H,089H,0ABH,0CFH ;CRC 3D 8023456789AB D0 ; DB 03DH,080H,023H,045H,067H,089H,0ABH,0D0H ;CRC 00 8023456789AB D1 ; DB 000H,080H,023H,045H,067H,089H,0ABH,0D1H ;CRC 47 8023456789AB D2 ; DB 047H,080H,023H,045H,067H,089H,0ABH,0D2H ;CRC 7A 8023456789AB D3 ; DB 07AH,080H,023H,045H,067H,089H,0ABH,0D3H ;CRC C9 8023456789AB D4 ; DB 0C9H,080H,023H,045H,067H,089H,0ABH,0D4H TABLE_WORDCRC0: DB 000H,001H,002H,003H,004H,005H,006H,007H TABLE_WORDCRC1: DB 001H,000H,000H,001H,003H,002H,001H,000H TABLE_WORDCRC0X: DB 000H,001H,002H,003H,004H,005H,006H,007H TABLE_WORDCRC1X: DB 007H,006H,005H,004H,003H,002H,001H,000H END
- CRC8算法“国际标准”的源程序(3106字)hotpower[28次]2004-9-5 13:23:33
CRC8算法“国际标准”的源程序 HotPower 发表于 2004-4-27 08:06 侃单片机 ←返回版面 举报该贴
在DALLAS的DS1990A.PDF文件中,CRC8的51源程序 PROC DO_CRC DO_CRC: PUSH ACC PUSH B PUSH ACC MOV B,#8 CRC_LOOP: XRL A,CRC RRC A MOV A,CRC JNC ZERO XRL A,#18H;CRC=X8+X5+X4+1 ZERO: RRC A MOV CRC,A POP ACC RR A PUSH ACC DJNZ B,CRC_LOOP POP ACC POP B POP ACC RET END
- 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中是很容易实现的。
- CRC逆运算...(532字)hotpower[21次]2004-9-5 14:56:12
我“发明”的CRC逆运算本来就是任意数据流加密及解密 HotPower 发表于 2004-4-25 02:49 侃单片机 ←返回版面 举报该贴
课本的经典的CRC算法几乎全是右移及查表的。
我研究了CRC十余年,最后“悟出”了CRC还可分左右移,可逆等“硬道理”并通过实战,效 果非常好。
实际上,在串行通讯中(包括无线),采用“按位CRC”实现密文传送,解密比加密更 快。。。
由于我已将算法用HTML文件格式公开,但愿它能在MCU中得到更广泛的应用,以了我之心 愿。。。
- (0字)DieHeart[3次]2004-9-5 15:35:17
- 有关"CRC权"的来历(2434字)hotpower[33次]2004-9-5 14:59:57
四子(EMC单片机)归边(台湾孤岛)没救了(难统一) HotPower 发表于 2004-4-29 01:57 侃单片机 ←返回版面 举报该贴
注:长子(侃单片机) 次子(AVR单片机) 三子(PIC单片机) 四子(EMC单片机)
说实话,EMC单片机被从最新论坛发配到资料商务交友,都是我和你及水管工的错!!!
想当初,我们三人在EMC上进行“游击战”,“水漫金山”。。。
更可恨的是气走了匠人,让我做什么“三浇主”——专业灌水。。。 我又来了一个“21IC论坛永远无人打破的辞职记录”。。。
你说“可气不可气”???
为此,我多次向匠人“赔礼道歉”,并用“血”写了一份“卖身契”—— 《群魔乱舞的CRC---三角及冗余校验密码技术.html 》
我内疚呀。。。
所以,我在“赎罪”。。。
但我看21IC真是“大义灭亲”了,所以才将四子发配“边塞”,“永不听用”!
我也无愧,因为我结识了您这位好友。。。
那份“同性恋”之作不知还在EMC否???
确实,这里有“几对”像我俩一样的“老猫”???
为此,我——无怨无悔!!!
提到“四子归边”,又让我想到了中国象棋。。。
虽然明天要出差,在临睡前在谈个中国象棋与编程思维问题。 在80年代初,我“创立”了“中国象棋数字编码方案”并成功地“嵌入”到国标码中。。。 具体“数字棋子”为: 1-车 2-马 3-相(象) 4-仕(士) 5-帅(将) 7-兵(卒) 8-炮 0-平 6-前(进) 9-后(退)
1.炮二平五 马8进7 1.8205 2867 2.马二进三 车9平8 2.2263 1908 。。。。。。。。。。。。。。。。。。。 11.前兵进一 后炮退3 11.6761 9893 12.前车平三 后卒平4 12.6103 9704 。。。。。。。。。。。。。。。。。。。
可能有人会拍砖,但这个编码和棋谱可以“告诉”我们: 学习和生活甚至“灌水”都有紧密联系的。。。 不要死读书,不要崇拜“经典”!!! 只有自己搞出来的才叫“经典”!!!别人再“牛”对自己都无用。 不要“这山望着那山高”,不要“自己的孩子,别人的老婆”!!! 和高手相遇时,要少说多“偷”,会也说一半!!! 要将“痛苦埋藏在心里”!!! 不要整天“妹妹找歌泪花流”!!!“网民天爷”。。。
我们必须找到规律,才能更好地解决问题,不要直接就出“结论”
- 21IC的“权”,匠人的“财” (3898字)hotpower[18次]2004-9-5 15:01:54
21IC的“权”,匠人的“财” HotPower 发表于 2004-4-28 23:02 侃单片机 ←返回版面 举报该贴
-------------------------------------------------------------------------------- ---- CRC加密“分解因式”(16进制数):(密钥为0018,初值为00,权为18) 第1步:初值为00,明文01,密文5E。(探亲生第1子)——密文5E 第2步:初值为5E,明文2B,密文C7。(探亲生第2子)——密文5EC7 第3步:初值为C7,明文C5,密文BC。(探亲生第3子)——密文5EC7BC 第4步:初值为BC,明文FB,密文C5。(探亲生第4子)——密文5EC7BCC5 第5步:初值为C5,明文00,密文F5。(探亲生第5子)——密文5EC7BCC5F5 第6步:初值为F5,明文00,密文4B。(探亲生第6子)——密文5EC7BCC5F54B 第7步:初值为4B,明文00,密文66。(探亲生第7子)——密文5EC7BCC5F54B66 -------------------------------------------------------------------------------- ---- CRC解密“分解因式”(16进制数):(密钥为0018,初值为00,权为18) 第1步:初值为00,密文5E,明文01。(寻浪子第1子)——明文01 第2步:初值为5E,密文C7,明文2B。(寻浪子第2子)——明文012B 第3步:初值为C7,密文BC,明文C5。(寻浪子第3子)——明文012BC5 第4步:初值为BC,密文C5,明文FB。(寻浪子第4子)——明文012BC5FB 第5步:初值为C5,密文F5,明文00。(寻浪子第5子)——明文012BC5FB00 第6步:初值为F5,密文4B,明文00。(寻浪子第6子)——明文012BC5FB0000 第7步:初值为4B,密文66,明文00。(寻浪子第7子)——明文012BC5FB000000 -------------------------------------------------------------------------------- ---- 从以上加密及解密两个“分解因式”中可以看出: 由于初值的对象不同,所以,采取的方法(函数)肯定不同。即其函数互为反函数。 这就是CRC正运算和CRC逆运算!
我们可以看出,XOR和CRC加密及解密是有着根本的区别的。 XOR加密及解密共用一个,而CRC需两个。 所以,XOR加密及解密2次后还原,而CRC经过2次同一函数后,将会“面目全非”!!! 所以,CRC的密级要比XOR高的多。
至于“多值”的问题,请看CRC解密“分解因式”中的第5步到第7步。 “多值”问题的出现也会给解密者带来很大的难度,同时给他明文和密文可能也推不出 “权”! “左移CRC算法”和“右移CRC算法”更会让他“哭爹叫娘”!!!
对照两个“分解因式”可以看出: 加密及解密的方法类同(有正函数和反函数之分), 只要知道了权及初值和明文(或密文),就能得到所需的密文(或)明文.
老大是“祖传秘方”,“一脉单传”。他掌握着21IC的财政大权——密钥的一半!(初值00) 而其他六个“光屁股”兄弟只好依次从自己哥哥手中“讨饭”——将其密文作为初值! 当然,要想真正了解(解密)21IC的“家世”(明文),还必须得到密钥的另一半——但在21IC 手中! 老大手握密钥的一半,六亲(弟)不认!
所以,CRC解密的关键在于21IC手中的那一半的密钥(权)!!! 而老大的那一半的密钥只对第1个明文字节有用!!!
所以,只要我们夺了21IC的“权”,密文将不攻自破!揭开EMC的流浪之迷。。。 老大的密钥就算了,找不到田鼠(初值)也没关系,了解EMC被“遗弃的原因”又能如 何???
看来老大是“六亲不认”,而21IC是“七亲不认”(多了一个EMC)。。。佩服!!!
现在,知道“六亲不认”的典故了吧。。。也知道什么是CRC的“权”了吧
郭靖:我没你厉害,敢当众推销“安防产品”,否则,我一定把初值定义为——初夜或处夜
如何进行“改革开放”,掩盖“亲情”关系,是我们继续探讨CRC密码的“一个原则问 题”。
请大家继续探讨。。。 若想将其改善,可以使用三角密码技术,让21IC手中的权——可变(玩弄权术) 这样的密码将会很难破。。。
夜猫子们,晚安,明早要到宝鸡出差,等我捉回一只“CRC鸡”吧。。。
- CRC8“深山探宝”——三角及冗余校验密码技术.html应用 (3952字)hotpower[22次]2004-9-5 15:10:34
CRC8“深山探宝”——三角及冗余校验密码技术.html应用 HotPower 发表于 2004-3-7 02:00 侃单
|
|
|
文章评论(0条评论)
登录后参与讨论