zoukankan      html  css  js  c++  java
  • 伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(2)------第二次扩张

    接上文

    《伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(1)------第一次扩张》

    继续探讨塔式扩张的第二部分,即1→2→4→12中2 → 4的元素扩张表示方式与计算公式推导。

    3.  (4)

    塔式扩张中的(4),即域GFq4。这是从二次域向四次域的第二次扩张,扩张公式如下:

    Fq4[v] = Fq2[v] / ( v2 - ξ), 其中,ξ = μ

    即:该次扩张的即约多项式为 x2 - μ, μ2 = α,  μ = √(-2)

    现在依然按照高维在前,低维在后的方式,定义两个域GFq4上的元素。

    X = (a, b ,c, d)

    Y = (e, f, g, h)

    即:

    X = a * v3 + b * v2 + c * v1 + d * v0 = a * v3 + b * v2 + c * v + d

    Y = e * v3 + f * v2 + g * v1 + h * v0 =  e * v3 + f * v2 + g * v + h


    加法和减法依然跟域GFq2上的元素运算规则一样,直接计算对应维度上的元素在素域q下的加和减。

    X + Y = (a + e, b + f, c + g, d + h)

    X - Y = (a - e, b - f, c - g, d - h)

    这一篇主要讨论域GFq4上的元素的乘法,以及带有即约多项式值的乘法。


    乘法

     即然是从2到4点扩张,那么首先考虑到将4次域上的元素用2次域上的元素进行表示。

    已知

    X = (a, b ,c, d)

    Y = (e, f, g, h)

    为使用基域Fq上的元素进行表示的。

    那么,定义四个域GFq2上的元素如下:

    A = (a, b)

    B = (c, d)

    C = (e, f)

    D = (g, h)

    则可以将X和Y以域GFq2上的元素进行表示

    X = (a, b ,c, d) = (A, B) = A * v + B

    Y = (e, f, g, h) = (C, D) = C * v + D

    则:

    X * Y = (A * v + B) * (C * v + D)

        = (A * C * v2 + (A * D + B * C) * v + B * D) mod ( v2 - ξ)

    即约多项式为 v2 - ξ, 其中 v2 = ξ = μ, 则:

        = (A * D + B * C) * v + B * D + A * C * μ

        = (A * D + B * C  ,  B * D + A * C * μ)

    其中A、B、C、D均为域GFq2上的元素,所以A * D 、 B * C  和  B * D均满足域GFq2上的元素的乘法,该计算公式已在上一篇博客中做过推导。

    而剩余的A * C * μ则适用于上篇文章中的带即约多项式值的乘法,此处也解释了当时留的悬念,即为什么要单独设置一个这样的乘法。


     带有即约多项式值的乘法

    此处设置这样一个乘法,想必也就好解释了,必然会在下一次扩张至12次域的时候,会有这样的子式需要处理,其计算过程为:

    X * Y * v = (A * v + B) * (C * v + D) * v

         = (A * C * v3 + (A * D + B * C) * v2 + B * D * v) mod ( v2 - ξ)

         = A * C * v * μ + (A * D + B * C) * μ + B * D * v

         = (B * D + A * C * μ) * v + (A * D + B * C) * μ

         = (B * D + A * C * μ   ,    A * D * μ + B * C * μ)

    同上,该计算过程转化为2次域GFq2上的元素的计算,包含一个乘法操作和三个带即约多项式的乘法操作。


    至此,便是所有在SM9算法中会用到的域GFq4上的计算规则。

    将该部分总结一下,两个域GFq4上的乘法,使用域GFq2上的元素表示之后,转化成了域GFq2上的乘法共4次,而一个域GFq2上的乘法需要域GFp上的乘法共4次,也就是最终需要16次基域乘法(不包含加减)。

    而向12次域GFq12上扩张的时候,则会转化成更多次的基域运算,该过程被称为塔式扩张想必也是因此。

    而扩张的目的也更加明显,就是将阔域上的元素使用基域上的元素进行表示,并适配基域运算法则进行计算。

    下一个篇幅会探讨第三次扩张4→12,并推导12次阔域下的元素计算公式。

  • 相关阅读:
    groovy hello world
    windows下使用命令行给通过genymotion创建的虚拟机配制IP地址
    洛谷1781 宇宙总统 解题报告
    洛谷1042 乒乓球 解题报告
    洛谷1031 均分纸牌 解题报告
    洛谷1023 税收与补贴问题 解题报告
    洛谷1540 机器翻译 解题报告
    洛谷1017 进制转换 解题报告
    [SDOI2011] 染色(Luogu 2486)
    树链剖分详解
  • 原文地址:https://www.cnblogs.com/heshuchao/p/8198494.html
Copyright © 2011-2022 走看看