接上文https://www.cnblogs.com/heshuchao/p/8196307.html

继续探讨塔式扩张的第二部分,即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次阔域下的元素计算公式。

伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(2)------第二次扩张的更多相关文章

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

    伽罗瓦域是抽象代数下的域论分支中的内容,这部分想必很多人都比较熟悉,此处不再赘述. 最近,国密算法中的SM2和SM9已经成为国际标准,其中SM9算法在椭圆曲线离散对数难题的基础上,添加了若干个双线性配 ...

  2. 如何在Vue中,当鼠标hover上元素时,给元素加遮罩层

    介绍 当鼠标hover 上元素时,给元素加一层遮罩层. 效果图 使用 import VueHoverMask from 'vue-hover-mask' export default { compon ...

  3. 在VS13上编译通过的代码放在12上编译-错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW

    在VS13上编译通过的代码放在12上编译 遇到错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW 1>------ 已启动 ...

  4. 获取html上元素的真正坐标

    使用HTML元素的style.left,style.top,style.width,style.height以及width,height属性,都不能获得元素的真正位置与大小,这些属性取出来的都是原来的 ...

  5. Appium+python自动化14-查看webview上元素(DevTools)

    前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...

  6. Appium+python自动化14-查看webview上元素(DevTools)【转载】

    前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...

  7. Appium如何查看webview上元素

    现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了: 那么如何定位webview上 ...

  8. leetcode:Minimum Path Sum(路线上元素和的最小值)【面试算法题】

    题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...

  9. python 不同集合上元素的迭代 chain()

    itertools.chain()可以接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节 >>> from itertools import chai ...

随机推荐

  1. 《Linux命令行与shell脚本编程大全》第二十章 正则表达式

    20.1 什么是正则表达式 20.1.1 定义 正则表达式是你所定义的模式模板.linux工具可以用它来过滤文本. 正则表达式利用通配符来描述数据流中第一个或多个字符. 正则表达式模式含有文本或特殊字 ...

  2. 企业实战Nginx+Tomcat动静分离架构的技术分享

    Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离.严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat.Re ...

  3. PHP基础知识点

    //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH变量名建议用 ...

  4. 【Spring】多数据源导致自动化配置失败问题

    一.问题描述 笔者根据需求在开发过程中,需要在原项目的基础上(单数据源),新增一个数据源C,根据C数据源来实现业务.至于为什么不新建一个项目,大概是因为这只是个小功能,访问量不大,不需要单独申请个服务 ...

  5. 原生Js实现拖拽(适用于pc和移动端)

    效果: HTML和CSS部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  6. Java调用PDFBox打印自定义纸张PDF

    打印对象 一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件. PageFormat 默认PDFPrintable无法设置页面大小. PDFPrintable print ...

  7. dubbo源码—dubbo自定义spring xml标签

    dubbo为了和spring更好的集成,提供了一些xml配置标签,也就是自定义标签 spring自定义标签 spring自定义标签的方式如下: 设计配置属性和JavaBean 编写xsd文件,校验xm ...

  8. Linux定义变量的脚本

    现有两段基本一样的代码,只是变量进行改变,其他都没有变化,但是执行过程中出现了不一样的结果 代码一: vi back.sh #backup import file,such as /etc/rc.lo ...

  9. PHP-学习之路1

    相信入职快有5个月了,目前项目做过HIS,zySystem,ComStoreSystem当然今天不是来介绍的,后期直到第四个月后APP护身宝经理拍板今后也就是明年正式交于我们团队接手与扩展,运维.虽然 ...

  10. Android 訪问权限清单

    Android权限设置 概述 权限 说明 訪问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES 读取或写入登记check-in数据库属性表的权限 获取 ...