如何執行 Rijndael 有限域的模歸約
我試圖了解如何計算 Rijndael 有限域的模減少。
此頁面上的範例說明了這一點
{53} • {CA} = {01}
,因為(11111101111110 mod 100011011) = {3F7E mod 11B} = {01} = 1
.我能夠達到我所擁有的地步
3F7E mod 11B
,但似乎無法弄清楚減少是如何工作的。11111101111110 (mod) 100011011 ^100011011 1110000011110 ^100011011 110110101110 ^100011011 10101110110 ^100011011 0100011010 ^100011011 <-- here, right shifted two places? 00000001
從這個例子中,為什麼它在一個點右移兩個位置?
我還找到了一個
0x1b*0xaa
等於的例子0x8c
。試圖自己解決這個問題,我明白了:0xE0E mod 0x11B
111000001110 ^100011011 11011010110 ^100011011 1010111010 ^100011011 010001100 ^100011011 10010111
這使它
0x97
首先我們來看看分工 $ \mathtt{0x3f7e} $ 經過 $ \mathtt{0x11b} $
1 11111101111110 | (mod) 100011011 2 ^100011011 +----------------------- 3 +-------------+ | 1????? 4 1110000011110 | >> 1 5 ^100011011 | 6 +------------+ | 11???? 7 110110101110 | >> 1 8 ^100011011 | 9 +-----------+ | 111??? 10 10101110110 | >> 1 11 ^100011011 | 12 +----------+ | 1111?? 13 0100011010 | >> 1 14 ^000000000 | 15 +---------+ | 11110? 16 100011010 | >> 1 17 ^100011011 | 18 +--------+ | 111101 19 00000001 |
因此,歐幾里得除法的結果是:
$$ \mathtt{0x3f7e} = \mathtt{0x11b} \times \mathtt{0x3d} + \mathtt{0x1} $$ 或者 : $$ \mathtt{11111101111110} = \mathtt{100011011} \times \mathtt{111101} + \mathtt{1} $$ 因此: $$ \mathtt{11111101111110} \equiv 1 \pmod{\mathtt{100011011}} $$ 由於我們不關心除法的結果,只關心餘數,我們直接忘記了它。
正如您所注意到的,每行減法中都有一個右移 (
>> 1
)。但也要注意,當商的一部分為 0 時,在右移之後什麼都不做(見行 $ \texttt{12} $ 至 $ \texttt{15} $ ) (因為我們將除數乘以 0,所以減法後的結果顯然是相同的……乘以 0)。因此我們可以分解線 $ \texttt{14} $ 至 $ \texttt{16} $ 通過雙右移 (
>> 2
),我們得到了維基百科的劃分:1 11111101111110 | (mod) 100011011 2 ^100011011 +----------------------- 3 +-------------+ | 1????? 4 1110000011110 | >> 1 5 ^100011011 | 6 +------------+ | 11???? 7 110110101110 | >> 1 8 ^100011011 | 9 +-----------+ | 111??? 10 10101110110 | >> 1 11 ^100011011 | 12 +----------+ | 1111?? 13 0100011010 | >> 2 17 ^100011011 | 18 +--------+ | 111101 19 00000001 |
TL;DR:雙右移對應於 $ \mathtt{0} $ es 在商中。
關於: $ \mathtt{0x1b} \times \mathtt{0xaa} \equiv \mathtt{0x8c} \pmod{\mathtt{0x11b}} $
回顧你的部門:
1 111000001110 2 ^100011011 3 11011010110 4 ^100011011 5 1010111010 6 ^100011011 7 010001100 8 ^100011011 <-- THIS IS VERY WRONG 9 10010111 <--
線條 $ \texttt{8} $ 和 $ \texttt{9} $ 根本不允許:
$$ \mathtt{10001100} < \mathtt{10001101} $$ 因此 $ \mathtt{10001100} $ 是結果和一個奇怪的巧合 $ \mathtt{10001100} = \mathtt{0x8c} $ .