先說乙個結論:有限域的階為質數的冪。應用於密碼學領域。
質數的冪: prime power
2, 3, 4, 5, 7, 8, 9, 11, 13, 16, 17, 19, 23, 25, 27, 29, 31, 32, 37, 41, 43, 47, 49, 53, 59, 61, 64, 67, 71, 73, 79, 81, 83, 89, 97, 101, 103, 107, 109, 113, 121, 125, 127, 128, 131, 137, 139, 149, 151, 157, 163, 167, 169, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 243, 251, 256, ...
有限域 finite field 又稱伽羅華域;是乙個定義了乘法,加法,減法和除法並滿足基本規則的集合。 包含元素的個數稱為階,必為 prime power。
例子1:
4個元素的有限域 gf(4)。
粉色部分為 binary field gf(2): o為假,i為真;加法為異或,乘法為『 且 』 。 coputing with bits 的結構。
例子2:對於集合
當n為質數時,集合為有限域;
當 n 為合數時,可寫為 n=s*r , 而按照集合上的乘法定義(取餘數),s乘r 得到 0,sr=0, 我們假設 s 存在乘法逆元,兩邊乘上此逆元,得到r=0 的矛盾式。 說明,s 和 r 根本就沒有逆元。所以此集合壓根就不是域!
『 整數mod p, 當 p為質數』
複習一下: 『整數模p 』 是乙個環,其元素為集合,即『同餘類』, 易證: 第乙個集合為乘法的單位元; 第n個集合為加法的單位元。
有限域 fd
我們假設其中元素 a0=0 為加法運算的單位元; a1=1 為乘法運算的單位元。
可以證明: 對於fd 中任何元素 ai , 都有 a0ai = a0
首先,加法和乘法有運算結果(d=3):
那麼可得, a0=a0a1=a0(a0+a1)=a0a0+a0, 很顯然:a0a0 只能為 a0
同理, a0+a2= a2= a1a2 =(a0+a1)(a2+a0) =a0a2+a2+ a0+a0= a0a2+a2, 等號兩邊加上 -a2 後得到:a0a2=a0
證明完畢。還可以進一步推導:
此外: 假設 a1+a2= a1, 右邊加乙個 a0, 則可得到 a2=a0, 矛盾。 所以只能是:a1+a2=a0
這樣: a1+a1就不可能等於 a0, 只能等於 a2; a2+a2 也只能等於 a1
再根據乘法的逆元存在(對於非 a0),可得知 a2a2 只能為 a1.
如此: f3運算表是唯一的。
充分利用『 域中元素均有加法逆元,且非 a0 元素均有乘法逆元』。可以證明:
1. 如果 ai*aj=a0, 那麼其中至少有乙個為 a0.
ai*aj+aj = aj
aj( ai+a1)=aj
假設 aj 不為 a0, 則等式兩邊乘上 aj 的逆元得到: ai+a1=a1=a1+a0 ; 再兩邊加上 a1 的逆元, 得到 ai=a0
證畢。2. a0 乘上任何元素必為 a0
用反證法:假設 a0*ai=aj , aj 不為 a0;
分2種情況:若 ai 不為 a0, 那麼兩邊乘上 ai 的逆元 ap,得到 a0=aj*ap, 由1可知 ap=a0, 但是域的定義中:a0 沒有乘法逆元,也不會是其他元素的乘法逆元, 所以矛盾了;
若 ai 為 a0, 則 a0*a0 = aj, a0*a0+a0=aj, a0*(a0+a1)=aj, a0*a1=aj, 兩邊乘上 a1的逆元,矛盾!
證畢。構造有限域的幾種具體方式
1. 非質數域
即域的階不為質數的1次方(不為質數本身)。構造 gf(q).
多項式的度 degree, 即最高次冪。
2. 對於有限域 gf(d), d=p^n, p為質數,n 為冪次。
利用『 有限有限域上的不可約多項式 』 的性質。 即考慮另乙個有限域 gf(p) 為『 整數模 p 』 =, 其上的乙個多項式的乙個根為 α ,
則 gf(d) 中的元素 a 可以展開為: a=a0*α0+a1*α1……+a(n-1)*αn-1 , 展開係數 a0,a1 屬於 gf(p)
例如: p=3, n=2, 則 gf(3)=
其不可約多項式可以取為 x2+x+2=0, α 為其根。
則 gf(9) 的元素可以表示為: a0+a1*α1 係數 a0,a1 屬於 gf(3)
總結: gf(d)中的元素 a 有 n 個展開係數,每個係數有 p個取值,所以一共有 d=p^n 個 a 元素.
3. 例子: 當 d=4 , p=2, n=2 時
在 gf(2)上只有乙個度為2的不可約多項式: x2+x+1
a0+a1*α
故 gf(4) 的4個元素為: 0, 1,a, 1+a
4 例子 當 p>2, 且 n=2 時
先引入 『 二次殘餘』 : quadratic residue
對於整數 q, 如果存在乙個整數 x, 使得 x2 和 q 模 n 同餘。
那麼稱 『 q 是模 n 二次殘餘的』。
現在對於 gf(p^2), 要找到 gf(p) 上的度為 2 的不可約多項式。 即為:x2 - r , r 為模 p 二次非殘餘。
如 p=3,5,11,13, …… r 可取 2
p=5,7,17, …… r 可取 3
a0+a1*α, 主要是借方程得到 α
5. gf(8) p=2, n=3 ; gf(27) p=3, n=3
x3 - x- 1 在 gf(2) 和 gf(3)上是不可約的。
6. gf(16) p=2, n=4
x4 + x+ 1 在 gf(2) 上是不可約的。
有限域上的逆元求解
這個模運算之前沒有看懂,學習相關數論知識之後,理解了有限域的基本四則運算。有限域f p 上元素g的逆元g 1,兩者關係有 g g 1 mod p 1,所以上面的運算 4 13 4 13 1 4 16 64 64 mod 23 18 下面 實現了有限域 f p 中a的逆元計算,很簡單的窮舉法,沒有使用...
關於有限域乘法器的理解
seuchenrui 126.com 最近在看aes的標準文件fips 197,其中有關於有限域乘法器的描述。雖然計算過程很簡單,但是就是不明白為什麼如此計算。問過度娘之後,才對有限域乘法器有了基本的了解,現記錄如下。特別感謝 注意這篇部落格思路是正確的,但是給出的既約多項式是錯誤的,應該將 x 8...
把N 分解成質數冪的乘積
題面 大意就是把n 分解成質數冪的乘積。最暴力的方法當然會超時,比如下面這個 include include include using namespace std int result 5010 int main for int i 2 i n i printf n 一想,j沒必要從2迴圈到n啊,...