Finite-Field

如何生成 GF(3^2) 的乘法表?

  • October 20, 2019

我明白,這對於任意 n 和 p = 2 是如何工作的,但我正在努力以更高的素數為基礎。在下文中,我想使用不可約多項式r(x) = x²+1 = 101

static const __flash uint8_t lookup[9][9] = {
 // 0,  1,  2, 10, 11, 12, 20, 21, 22  

    0,  0,  0,  0,  0,  0,  0,  0,  0,   // 0
    0,  1,  2, 10, 11, 12, 20, 21, 22,   // 1
    0,  2,  ?,  ?,  ?, ...               // 2
    ...

};

在這種情況下, 的條目2 * 24等同於10使用 的基數310 mod 101以 of 為底,那3-21等價於2因為-21 + 10 + 10 + 10 = 2(10 等價於以 3 為底的 3)。所以這個條目的實際最終結果是2.
這是正確的還是完全錯誤的?

我很掙扎,因為如果你將這些條目寫成多項式,你就會有:
0, 1, 2, x, x + 1, x + 2, 2x, 2x + 1, 2x + 2
如果我從上面的猜測是正確的,那麼2 * 2 = x and x mod x²+1 = 2這看起來有點錯誤。

如果我從上面的猜測是正確的,那麼2 * 2 = x and x mod x²+1 = 2這看起來有點錯誤。

不僅看起來不對,而且是不對的。

如果 $ GF(3) $ , 2 * 2 = 1, 即使您將欄位擴展到 $ GF(3^2) $ .

一般來說,乘以 2 很容易;我們可以只使用身份 $ 2 \times a = (1 + 1) \times a = 1 \times a + 1 \times a = a + a $ , 對於任何 $ a $ .

一個有點棘手的部分是10 * 10;但是,如果我們只使用多項式歸約,我們會得到 $ x \times x = x^2 \bmod x^2 + 1 = x^2 - (x^2 + 1) = 2 $ , 所以10 * 10 = 2.

考慮到這一點,我們可以使用分配律完成所有其他乘法運算,例如, $ (x + 2) \times (2x + 1) = (x \times 2x) + (x \times 1) + (2 \times 2x) + (2 \times 1) = (2\cdot 2) + (x) + (x) + 2 = 2x $ , 那是,12 * 21 = 20

引用自:https://crypto.stackexchange.com/questions/75193