密码学-有限域
有限域
近世代数基础
- 群
-
A5交换群:满足交换律的群
-
循环群:如果群中每一个元素都是某个固定元素g属于群G的幂g^k,则群G为循环群
-
环
-
交换环:M4乘法的交换律
-
整环:M5存在乘法单位元、M6无零因子
-
域F:满足A1A5,M1M6且有M7乘法逆元
有限域
- 阶为p的有限域GF§
- 给定一个素数p,元素个数为p的有限域GF§被定义为整数{0,1,……,p-1}的集合Zp,其运算为模p的算术运算
- 是一个交换环
- Zn中某一整数有乘法逆元,当且仅当该整数与n互素
- 若n为素数,则Zn中所有非零整数都与n互素,所以Zn中所有非零整数都有乘法逆元。
- 在GF(p)中秋乘法逆元
- a,b互素,则b有模a的乘法逆元
- a是素数并且b<a,则a和b互素,且其最大公因子为1
- 用扩展欧几里得算法:求b在a下的逆元即求扩展欧几里得算法中的y
-
多项式运算
-
普通多项式运算:
- f(x)是定义在系数集S上的n次多项式
-
- f(x)是定义在系数集S上的n次多项式
-
系数在Zp中的多项式运算
-
考虑几个系数集合S的除法运算5/3
- 如果S是有理数集合(域),那么结果可与简单表示成5/3,这是S中的一个元素
- 如果S是域Z7,此时5/3 = (5*3^-1)mod 7 = 4。一定能整除
- 如果S是整数集(是环但不是域),那么结果商1余2
-
多项式除法
-
系数集是一个域,多项式除法也不一定能整除:多项式会产生一个商式和一个余式
-
n次多项式f(x)和m次多项式g(x),(m<n),如果g(x)除f(x)的到一个商式q(x)和一个余式r(x),则满足:
f(x) = q(x)*g(x)+r(x)
-
-
多项式模运算:与整数运算相似:可以写成:r(x) = f(x)mod g(x)
-
GF(2)上的多项式
- 加法和减法相当于异或
- 乘法相当于逻辑与
-
素多项式:当且仅当f(x)不能表示为两个多项式的积,域F上的多项式被称为不可约的
-
最大公因式:通过欧几里得算法可求,例:
-
-
-
有限域GF(2n):有限域的元素个数必须为pn,其中p为素数,n为正整数
-
多项式模运算:
-
有限域构造运算:
- 遵循普通多项式运算规则
- 系数运算以p为模,即遵循有限域Zp上的运算规则
- 如果乘法运算的结果次数大于n-1的多项式,那么必须将其除以一个次数为n的既约多项式m(x)并取余式
-
-
多项式剩余类集合
-
多项式的逆元
- f(x)a(x)+m(x)b(x) = 1,两边同时模上m(x)得知f(x)的逆就是a(x)
-
构造有限域GF(2^3)
- 既约多项式:x3+x2+1和x^3+x+1
- 选择后者则,
-
求乘法逆元:给定既约多项式a(x)和模的有限域元素b(x),则其乘法逆元满足
b ( x ) w ( x ) = 1 m o d a ( x ) b(x)w(x) = 1 mod a(x) b(x)w(x)=1moda(x)
使用扩展欧几里得算法
-
加快多项式乘法:多项式表示成一个n位的二进制数
-
GF(2^n)加法、减法:二进制异或操作
-
GF(2^n)乘法:
-
一般地
x n m o d p ( x ) = p ( x ) − x n x^n mod p(x) = p(x)-x^n xnmodp(x)=p(x)−xn -
f ( x ) = b 7 x 7 + b 6 x 6 + . . . + b 1 x + b 0 x ∗ f ( x ) = b 7 x 8 + b 6 x 7 + . . . + b 1 x 2 + b 0 x x ∗ f ( x ) m o d m ( x ) = m ( x ) − b 7 x 8 + b 6 x 7 + . . . + b 1 x 2 + b 0 x 表 达 为 二 进 制 形 式 : x ∗ f ( x ) = b 6 b 5 b 4 b 3 b 2 b 1 b 0 0 如 果 b 7 = 0 x ∗ f ( x ) = b 6 b 5 b 4 b 3 b 2 b 1 b 0 0 异 或 00011011 如 果 b 7 = 1 f(x) = b_7x^7+b_6x^6+...+b_1x+b_0 \\ x*f(x) = b_7x^8+b_6x^7+...+b_1x^2+b_0x\\x*f(x) mod m(x) = m(x)-b_7x^8+b_6x^7+...+b_1x^2+b_0x \\表达为二进制形式: \\x*f(x) = b_6b_5b_4b_3b_2b_1b_00~~~~如果b_7=0 \\x*f(x) = b_6b_5b_4b_3b_2b_1b_00异或00011011~~~~如果b_7=1 f(x)=b7x7+b6x6+...+b1x+b0x∗f(x)=b7x8+b6x7+...+b1x2+b0xx∗f(x)modm(x)=m(x)−b7x8+b6x7+...+b1x2+b0x表达为二进制形式:x∗f(x)=b6b5b4b3b2b1b00 如果b7=0x∗f(x)=b6b5b4b3b2b1b00异或00011011 如果b7=1
-
-
-
生成元
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!