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次阔域下的元素计算公式。

  • 相关阅读:
    (转载)SAPI 包含sphelper.h编译错误解决方案
    C++11标准的智能指针、野指针、内存泄露的理解(日后还会补充,先浅谈自己的理解)
    504. Base 7(LeetCode)
    242. Valid Anagram(LeetCode)
    169. Majority Element(LeetCode)
    100. Same Tree(LeetCode)
    171. Excel Sheet Column Number(LeetCode)
    168. Excel Sheet Column Title(LeetCode)
    122.Best Time to Buy and Sell Stock II(LeetCode)
    404. Sum of Left Leaves(LeetCode)
  • 原文地址:https://www.cnblogs.com/heshuchao/p/8198494.html
Copyright © 2011-2022 走看看