首页
社区
课程
招聘
[旧帖] [原创]如何手工计算0x31333134的CRC-32值? 0.00雪花
发表于: 2008-3-28 22:24 11695

[旧帖] [原创]如何手工计算0x31333134的CRC-32值? 0.00雪花

2008-3-28 22:24
11695
收藏
免费 7
支持
分享
最新回复 (7)
雪    币: 216
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
学习.................
2008-3-28 22:27
0
雪    币: 4822
活跃值: (3822)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
3
先谢过,待我回头看完并验证了再来请教。

你是我个人碰到过的惟一一个肯解答我这个变态问题的人,十分感谢。

在下的初等数学基本还给了中学老师,要慢慢看。

顺便先问一下,我用现成的工具计算hex string,"31333134"或者计算ascii串"1314",得到的结果
都是0xa817e816,由于我还未能仔细消化你的运算过程,可能这个问题比较愚蠢,见谅。
2008-3-29 15:08
0
雪    币: 297
活跃值: (27)
能力值: ( LV13,RANK:380 )
在线值:
发帖
回帖
粉丝
4
我确实就是想回答你的问题。但在写文章计算到一半时,发现我计算的是C型字符串"4131",而不是你要求的"1314",就是说我计算的是另一个字符串。但只要你根据我的文章的思路,慢慢地算,你也会找到答案。

文章中已经加入"1314"的计算过程,欢迎纠错。
2008-3-29 18:14
0
雪    币: 4822
活跃值: (3822)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
5
非常感谢!待我拜读。
2008-3-29 22:02
0
雪    币: 303
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哈.非常感谢tnttools
正在找此类文章.看了N个都看不明白.
看了tnttools大侠的文章后,感觉明白了许多.
2008-3-30 00:27
0
雪    币: 4822
活跃值: (3822)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
7
(我把tnttools的文字风格化了一下)

tnttools@pediy给出了最终手工运算过程,他是唯一一个正面解答了我的困惑的人,
十分感谢。

--------------------------------------------------------------------------
[PKZIP, AUTODIN II, Ethernet, FDDI]

Width   : 32
Poly    : 04C11DB7
        : x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0
        : (32,26,23,22,16,12,11,10,8,7,5,4,2,1,0)
Init    : FFFFFFFF
RefIn   : True
RefOut  : True
XorOut  : FFFFFFFF
--------------------------------------------------------------------------

    (Poly:04C11DB7)
        |
        v
0000 0100 1100 0001 0001 1101 1011 0111
        |
    (给出Poly时,一般省略了最高位的1,实际运算时要补上)
        |
        v
1 0000 0100 1100 0001 0001 1101 1011 0111
        |
        v
    (这就是除数)

"\x31\x33\x31\x34" (原始数据)
        |
    (展开成二进制表示)
        |
        v
0011 0001 0011 0011 0011 0001 0011 0100
        |
    (RefIn:True)
        |
        v
1000 1100 1100 1100 1000 1100 0010 1100
        |
    (Init:FFFFFFFF)
        |
        v
1000 1100 1100 1100 1000 1100 0010 1100
1111 1111 1111 1111 1111 1111 1111 1111 +(模2加法,非进位算术加法,就是异或)
---------------------------------------
0111 0011 0011 0011 0111 0011 1101 0011 (由于是与全1异或,实际就相当于取反)
        |
    (在尾部添加0,0的个数比除数的2进制位数少1,就本例而言,添加32个0)
        |
        v
0111 0011 0011 0011 0111 0011 1101 0011 0000 0000 0000 0000 0000 0000 0000 0000
        |
        v
    (这就是被除数)

进行多项式长除法运算:

                                                                    1110010110111011010101100101110(我们不关心商)
                                  +----------------------------------------------------------------
100000100110000010001110110110111 ) 111001100110011011100111101001100000000000000000000000000000000
                                    100000100110000010001110110110111
                                    ---------------------------------
                                     110010000000110011010010111110110
                                     100000100110000010001110110110111
                                     ---------------------------------
                                      100101001101100010111000010000010
                                      100000100110000010001110110110111
                                      ---------------------------------
                                         101101011100000110110100110101000
                                         100000100110000010001110110110111
                                         ---------------------------------
                                           110111101000010011101000001111100
                                           100000100110000010001110110110111
                                           ---------------------------------
                                            101110011100100011001101110010110
                                            100000100110000010001110110110111
                                            ---------------------------------
                                              111011101010000100001100010000100
                                              100000100110000010001110110110111
                                              ---------------------------------
                                               110110011000001100000101001100110
                                               100000100110000010001110110110111
                                               ---------------------------------
                                                101101111100011100010111110100010
                                                100000100110000010001110110110111
                                                ---------------------------------
                                                  110101101001111001100100001010100
                                                  100000100110000010001110110110111
                                                  ---------------------------------
                                                   101010011111110111010101111000110
                                                   100000100110000010001110110110111
                                                   ---------------------------------
                                                     101011100111010101101100111000100
                                                     100000100110000010001110110110111
                                                     ---------------------------------
                                                       101100000101011110001000111001100
                                                       100000100110000010001110110110111
                                                       ---------------------------------
                                                         110010001101110000011000111101100
                                                         100000100110000010001110110110111
                                                         ---------------------------------
                                                          100101010111100100101100010110110
                                                          100000100110000010001110110110111
                                                          ---------------------------------
                                                             101110001100110100010100000001000
                                                             100000100110000010001110110110111
                                                             ---------------------------------
                                                               111010101011011001101011011111100
                                                               100000100110000010001110110110111
                                                               ---------------------------------
                                                                110100011010110111001011010010110
                                                                100000100110000010001110110110111
                                                                ---------------------------------
                                                                 101001111001101010001011001000010
                                                                 100000100110000010001110110110111
                                                                 ---------------------------------
                                                                   10010111111010000001011111101010(余数)

1001 0111 1110 1000 0001 0111 1110 1010 (余数)
        |
    (RefOut:True)
        |
        v
0101 0111 1110 1000 0001 0111 1110 1001
        |
    (XorOut:FFFFFFFF)
        |
        v
0101 0111 1110 1000 0001 0111 1110 1001
1111 1111 1111 1111 1111 1111 1111 1111 +(模2加法,非进位算术加法,就是异或)
---------------------------------------
1010 1000 0001 0111 1110 1000 0001 0110 (由于是与全1异或,实际就相当于取反)
        |
        v
    0xA817E816 (最终结果)

我当时手工计算失败的原因在于没有针对下列参数进行相应处理,只是简单地进行多
项式长除法运算:

--------------------------------------------------------------------------
Init    : FFFFFFFF
RefIn   : True
RefOut  : True
XorOut  : FFFFFFFF
--------------------------------------------------------------------------

再次感谢tnttools@pediy的手工运算过程。
2008-3-31 13:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习了。。。。。。
2008-3-31 15:42
0
游客
登录 | 注册 方可回帖
返回
//