一、前言

        这是期末考试必考榜单的第五项

二、多项式模乘

例题:

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

 

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐