HotCRC計算器中的“運算流”內顯示的是明文流進行CRC運算時,真實的內部讀取位元組順序。
對於左移CRC運算,明文是按大端資料排列的,故此時的明文流0123456789ABCDEF就是運算流0123456789ABCDEF。
對於右移CRC運算,明文是按小端資料排列的,故此時的明文流0123456789ABCDEF不是運算流23016745AB89EFCD。(如下圖所示)
因為是CRC16運算,故權值長度為16位即兩個位元組,而明文長度為8個位元組,故明文流被分為8/2=4組,0123,4567,89AB,CDEF。
對應的小端運算流為2301,6745,AB89,EFCD。
特別注意:
菜農將CRC演算法總共分為6種,其中前5種CRC
演算法是按位元組自然順序讀取資料的,即不管CRCn中的n是多少,都是每次讀取一個位元組。故根本沒有資料排列的問題。
而第6種移位演算法(HotCRC計算器內部採用),它是俺每組資料長度為權值長度讀取資料的,故只有它可以記憶CRC運算中的移位位資訊,故只有它才可以完成CRC逆運算。
而前5種CRC演算法是不可能實現CRC逆運算的。
HotCRC計算器中的“運算流”內顯示的是明文流進行CRC運算時,真實的內部讀取位元組順序。
對於左移CRC運算,明文是按大端資料排列的,故此時的明文流0123456789ABCDEF就是運算流0123456789ABCDEF。
對於右移CRC運算,明文是按小端資料排列的,故此時的明文流0123456789ABCDEF不是運算流23016745AB89EFCD。(如下圖所示)
因為是CRC16運算,故權值長度為16位即兩個位元組,而明文長度為8個位元組,故明文流被分為8/2=4組,0123,4567,89AB,CDEF。
對應的小端運算流為2301,6745,AB89,EFCD。
特別注意:
菜農將CRC演算法總共分為6種,其中前5種CRC
演算法是按位元組自然順序讀取資料的,即不管CRCn中的n是多少,都是每次讀取一個位元組。故根本沒有資料排列的問題。
而第6種移位演算法(HotCRC計算器內部採用),它是俺每組資料長度為權值長度讀取資料的,故只有它可以記憶CRC運算中的移位位資訊,故只有它才可以完成CRC逆運算。
而前5種CRC演算法是不可能實現CRC逆運算的。