伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(2)------第二次扩张
接上文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)------第二次扩张的更多相关文章
- 伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(1)------第一次扩张
伽罗瓦域是抽象代数下的域论分支中的内容,这部分想必很多人都比较熟悉,此处不再赘述. 最近,国密算法中的SM2和SM9已经成为国际标准,其中SM9算法在椭圆曲线离散对数难题的基础上,添加了若干个双线性配 ...
- 如何在Vue中,当鼠标hover上元素时,给元素加遮罩层
介绍 当鼠标hover 上元素时,给元素加一层遮罩层. 效果图 使用 import VueHoverMask from 'vue-hover-mask' export default { compon ...
- 在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>------ 已启动 ...
- 获取html上元素的真正坐标
使用HTML元素的style.left,style.top,style.width,style.height以及width,height属性,都不能获得元素的真正位置与大小,这些属性取出来的都是原来的 ...
- Appium+python自动化14-查看webview上元素(DevTools)
前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...
- Appium+python自动化14-查看webview上元素(DevTools)【转载】
前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...
- Appium如何查看webview上元素
现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了: 那么如何定位webview上 ...
- 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 ...
- python 不同集合上元素的迭代 chain()
itertools.chain()可以接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节 >>> from itertools import chai ...
随机推荐
- memcache调整value大小限制
> *事件背景: 当Redis有问题时按预案就会切换到本机memcache,但是我们首页 key:value现 在是1.5M同时memcache item限制是1M,导致首页写入memcache ...
- select控件自动触发change事件
这里接上面的二级联动.背景:当页面跳转到修改页面时,需要首先绑定学院和专业.这就需要在页面加载时触发select的change事件,具体用trigger函数进行实现.代码如下. $("#xs ...
- 数据库文件*.sdf文件定时备份,但是大小的增量在不断增长的问题排查
在某项目上,使用SQL Server数据库,现场反馈每天定时备份数据库文件,每天的数据量是400多个申请单的量.之前每天增长量是50M,但是后来两天增长量是80M,每天的数据量差不多. 到底从什么地方 ...
- 我的第一个python web开发框架(18)——前台页面与接口整合
由于我们前后台系统没有分开,所以前台页面调用接口时,可以直接使用后台管理系统已经完成的接口,不过后台管理系统接口的访问加上了登录验证,所以需要将前台要用到的接口进行处理,让它们设置到白名单当中 我们打 ...
- extjs 关于dom操作的几个库
经过几天的学习研究,发现ext与jquery的设计思路完全是来自两个方向. jquery是内聚,把所有东西都放在$的下面,而ext是采用分模块的设计思路,每个功能封装一个库.这样就形成了各自的实用风格 ...
- hdu 5305 friends
每一次比赛的时候脑子都卡顿, 这次更离谱,我居然二进制枚举边,这么大的复杂度.而且剪不了枝 后来学长说着是道爆搜.搜每一条边.恍然大悟. 仅仅须要剪掉点的度数是奇数的时候,或者他的线上朋友或线下朋友大 ...
- Android setContentView方法解析(一)
在Activity的生命周期onCreate中.我们一般都习惯性的调用setContentView(int layoutResID)方法,把布局文件载入到页面上来.以下我们就来通过源代码一步步的分析怎 ...
- oracle自己主动维护
检查ORACLE自己主动维护任务是否关闭 SQL> select t.client_name, t.status from dba_autotask_client t; CLIENT_NAM ...
- 利用java mail发送邮件(转)
JavaMail是SUN提供给开发者在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持经常使用的邮件协议,如SMTP.POP3.IMAP.开发者使用JavaMail编写邮件程序时,无需考 ...
- 【打CF,学算法——三星级】Codeforces Round #313 (Div. 2) C. Gerald's Hexagon
[CF简单介绍] 提交链接:http://codeforces.com/contest/560/problem/C 题面: C. Gerald's Hexagon time limit per tes ...