一、前言
这是期末考试必考榜单的第五项
二、多项式模乘
例题:
m(x) = x8+x4+x3+x+1
57*83 = ?(mod m(x))
解:
①化二进制
将57、83从16进制转化为2进制
f(x) = 57 = 01010111
g(x) = 83 = 10000011
由于有限域GF(2^8) 所以m(x) 可以写成
m(x) = x4+x3+x+1 = 00011011
②计算f(x)*xn
如何计算乘法呢?首先引入一个概念
x8 mod m(x) = [m(x) – x8] = m(x)
然后开始计算
f(x)*x1 = 01010111 * 00000010 = 10101110
由于 f(x)*x1 = 10101110 中
并没有超过2^7的值 所以不需要单独计算x^8 mod m(x)
f(x)*x2 = 10101110 * 00000010 = 101011100
计算完f(x) * x^2 后可以发现 有一个1顶到了 2*2^8的位置上
需要单独计算 f(x)*x2 在有限域GF(2^8)中的对应值
101011100 = 100000000 + 01011100
根据上面 引入的概念 可以推到:
m(x) + 01011100 = 00011011 + 01011100 = 01000111
所以f(x)*x2 = 01000111
按照这个算法可以列出f(x)与xn相乘的结果表
算式 | 二进制值 |
f(x)*x^0 | 01010111 |
f(x)*x^1 | 10101110 |
f(x)*x^2 | 01000111 |
f(x)*x^3 | 10001110 |
f(x)*x^4 | 00000111 |
f(x)*x^5 | 00001110 |
f(x)*x^6 | 00011100 |
f(x)*x^7 | 00111000 |
③将g(x)分解
已知g(x) = 83 = 10000011
相当于g(x) = x^7 + x^1 + 1
f(x) * g(x) = f(x) * (x^7 + x^1 + 1)
=f(x) * x^7 + f(x) * x^1 + f(x) * 1
对照上一步写的表格填一下
00111000 + 10101110 + 01010111
然后就按 模二加 运算
最后的结果是 11000001
相当于 x^7 + x^6 + 1