谈谈有限域那些事儿

谈谈有限域那些事儿在本人的其它博文中 介绍了主流的三种公钥加密算法 RSA 离散对数加密和椭圆曲线加密 出于可读性上的考虑 文章中尽量减少了代数相关的描述 实际上 这三者都是基于有限域的 如果能从抽象代数角度去解释 会更简洁

序言


在本人的其它博文中,介绍了主流的三种公钥加密算法:RSA、离散对数加密和椭圆曲线加密。出于可读性上的考虑,文章中尽量减少了代数相关的描述。实际上,他们或多或少都跟有限域扯上了关系,如果能从抽象代数角度去解释,会更简洁。

抽象代数基础


抽象代数,其实就是对我们日常使用的代数运算进行了抽象,将其泛化到更一般的领域。小学的时候我们学习加法和乘法,里面有说它们满足结合律、交换律、分配律。这么多年我们一直把这些性质当成自然而然的东西,但是在抽象代数中,定义某些运算时,他们未必就像在普通加法乘法里那么显然。

集合

这是高中数学就有的内容。集合具有三个性质:

  1. 无序性。集合中的元素是无序的。
  2. 唯一性。集合中每个元素都是唯一、不重复的。
  3. 确定性。给定一个元素和一个集合,这个元素要么属于这个集合,要么不属于这个集合,不存在其它情况。

比较常见的集合有:整数集( Z \mathbb{Z} Z)、有理数集( Q \mathbb{Q} Q)、实数集( R \mathbb{R} R)等。

半群

在一个集合S中定义了某种运算(记作加法“+”,但这个加法指代广泛意义上的运算,并不是指日常使用的加法),那么在这个集合上,如果这种运算满足以下性质,那么他和集合S共同组成一个半群,记作(S, +):

  1. 封闭性。也就是运算的结果始终在集合S内
  2. 结合律。也就是满足:(a + b) + c= a + (b + c)

例子:如果集合S是全体实数(记作“R”),而运算是实数加法,那么它们共同形成了一个半群,记作(R, +)

幺半群

如果一个半群(S, +)中存在一个元素e,使得S中所有的元素a都满足:

a + e = e + a = a a + e = e + a = a a+e=e+a=a

那么这个半群被称为幺半群,元素e被称为单位元或者幺元

例子:(R, +)中,实数0符合这一要求,所以(R, +)是幺半群,0是它的单位元。

如果一个幺半群(S, +)中的每一个元素a都有唯一一个元素b与之对应且满足以下性质:

a + b = b + a = e , 其 中 e 是 单 位 元 a + b = b + a = e,其中e是单位元 a+b=b+a=ee

那么这个幺半群就是一个。群中元素a和元素b互为逆元,记作a = -b或者b = -a。逆元存在,也就定义了群上的减法。a减去b,其实就是a加上b的逆元。也就是 a − b = a + ( − b ) a – b = a + (-b) ab=a+(b)

例子:(R, +)中,每一个正数都和一个负数一一对应,他们的和为0。0取负是它自身。所以(R, +)是一个群。

交换群

如果一个群(S, +)符合交换律,即对于集合中任意元素a和b,满足:

a + b = b + a a + b = b + a a+b=b+a

那么这个群被称为交换群,又叫阿贝尔群

例子:两个实数相加谁先谁后对结果没影响,满足交换律,所以(R, +)是一个交换群。

在一个交换群(S, +)上, 再定义另外一种运算(记作乘法“⋅”,同样地这个乘法也不是指日常使用的乘法),得到(S, +, ⋅)。如果(S, +, ⋅)满足以下性质:

  1. (S, ⋅)是一个幺半群。
  2. 两种运算满足分配律,即a(b + c) = ab + ac

那么那么(S, +, ⋅)形成一个。此时群(S, +)的单位元被称为环(S, +, ⋅)的零元

例子:实数集R和实数乘法形成一个幺半群(R, ⋅),单位元是实数1,而且和实数加法满足分配律,所以(R, +, ⋅)是一个环。

除环

如果幺半群(S, ⋅)里除了零元以外的所有元素都有逆元,那么(S, +, ⋅)被称为除环

例子:(R, ⋅)中,除了实数0((R, +)的单位元)以外所有数都有倒数,一个数和他的倒数之积为1(单位元),也就是一个实数的倒数就是它的乘法逆元。所以(R, +, ⋅)是一个除环。但是如果把其中的实数集改为整数集,就不满足这个性质了,因为大于1的整数倒数不在整数集中,因此没有乘法逆元。

交换环

如果环(S, +, ⋅)中,(S, ⋅)满足交换律,那么(S, +, ⋅)被称为交换环

例子:实数乘法满足交换律,所以(R, +, ⋅)是一个交换环。

如果一个环(S, +, ⋅),既是除环又是交换环,那么它是一个

例子:(R, +, ⋅)既是除环又是交换环,所以它是一个域,称为实数域

有限域


实数有无限多个,所以实数域是一个无限域。而如果一个域的元素是有限的,那么他就是一个有限域,又叫伽罗瓦域(就是以那个为爱死于决斗的数学家命名)。

有限域中元素的个数被称为有限域的阶(order)。有限域的阶一定是某个素数p的k次幂(k是正整数)。

有限域 G F ( p ) GF(p) GF(p)

最常见的有限域莫过于模素数p有限域 G F ( p ) GF(p) GF(p)

G F ( p ) GF(p) GF(p)是定义在整数集合 { 0 , 1 , . . . , p − 1 } \{0, 1, … , p-1\} {
0,1,...,p
1}
上的域。 G F ( p ) GF(p) GF(p)上的加法和乘法分别是模加法和模乘法。

加法和乘法

模加法模乘法和普通的整数加法乘法类似,唯一不同的是,当运算的结果超出范围时,要将运算结果对素数p取模。比如 G F ( 7 ) GF(7) GF(7)定义在 { 0 , 1 , 2 , 3 , 4 , 5 , 6 } \{0, 1, 2, 3, 4, 5, 6\} {
0,1,2,3,4,5,6}
上,它的加法和乘法是这样的:
1 + 2 = 3 m o d    7 = 3 5 + 6 = 11 m o d    7 = 4 1 ∗ 2 = 2 m o d    7 = 2 4 ∗ 5 = 20 m o d    7 = 6 \begin{aligned} 1+2=3\mod 7&=3 \\ 5+6=11\mod 7&=4 \\ 1*2=2\mod 7&=2 \\ 4*5=20\mod 7&=6 \end{aligned} 1+2=3mod75+6=11mod712=2mod745=20mod7=3=4=2=6

减法

除法

有限域 G F ( 2 m ) GF(2^m) GF(2m)

除了 G F ( p ) GF(p) GF(p)外,常见的有限域还有 G F ( 2 m ) GF(2^m) GF(2m)。它在里德-所罗门编码(二维码使用的编码)以及椭圆曲线加密中都有使用。

G F ( 2 m ) GF(2^m) GF(2m)正如他的名称,包含 2 m 2^m 2m个元素。为什么是2的m次方而不是3的m次方或者5的m次方呢?

因为计算机是二进制的, 2 m 2^m 2m个元素恰好跟长度为m的二进制数( 0 ∼ 2 m − 1 0 \sim 2^m-1 02m1)一一对应。比如 G F ( 2 8 ) GF(2^8) GF(28),刚好跟计算机中8个二进制位,也就是一个字节(0~255)对应。所以它在计算机或者专用硬件上可以有很高的运算效率。

为了方便,我们把 G F ( 2 m ) GF(2^m) GF(2m)中的元素表示成长度为m的二进制形式。下面以m=3为例

加法和减法

G F ( 2 m ) GF(2^m) GF(2m)上的加法和减法都是异或运算。加法单位元是000
010和110都是GF(2^3)的元素。那么
010 + 110 = 010 ⊕ 110 = 100 010 − 110 = 010 ⊕ 110 = 100 \begin{aligned} 010+110=010 \oplus 110&=100 \\ 010-110=010 \oplus 110&=100 \end{aligned} 010+110=010110010110=010110=100=100
因为长度为m的二进制数异或结果还是长度为m的二进制数,所以不需要考虑结果超出范围的情况。


乘法

乘法其实就是移位加上异或。乘法单位元是001
举个栗子,111乘以101,基于乘法分配律,可以得到:
111 ∗ 101 = 111 ∗ 100 + 111 ∗ 00 + 111 ∗ 1 = 11100 + 0000 + 111 = 11100 ⊕ 111 = 11011 \begin{aligned} 111*101&=111*100+111*00+111*1\\ &=11100+0000+111 \\ &=11100\oplus 111\\ &=11011 \end{aligned} 111101=111100+11100+1111=11100+0000+111=11100111=11011
如果直接相乘得到的结果长度不大于m,这就是最终结果。但是这里得到的结果是11011,长度超过了3,那么就要想办法对它进行处理。怎么处理呢?还是对一个“素数”取模。
需要注意,这里的“素数”并不是普通的素数,而是基于上述乘法,无法由两个数相乘得到的数。这样的“素数”可能有多个,不同的选择会有不同的结果。



对于 G F ( 2 3 ) GF(2^3) GF(23),1011就是其中一个“素数”。11011对1011取模,过程如下:
11011 m o d    1011 = 11011 − 1011 ∗ 10 m o d    1011 = 11011 ⊕ 10110 m o d    1011 = 1101 m o d    1011 = 1101 − 1011 ∗ 1 = 1101 ⊕ 1011 = 110 \begin{aligned} 11011\mod 1011&=11011 – 1011*10 \mod 1011 \\ &=11011\oplus10110 \mod 1011\\ &=1101 \mod 1011 \\ &=1101 – 1011*1 \\ &=1101\oplus 1011 \\ &=110 \end{aligned} 11011mod1011=11011101110mod1011=1101110110mod1011=1101mod1011=110110111=11011011=110

除法

除法依然是乘以一个倒数,使用的方法同 G F ( p ) GF(p) GF(p)一样是扩展欧几里得算法,这里不作介绍。

参考文献

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211729.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:44
下一篇 2026年3月18日 下午9:45


相关推荐

  • JAVA Socket详解

    1问题引入1.1网络架构模型网络架构模型主要有OSI参考模型和TCP/IP五层模型1.1.1OSI参考模型OSI(OpenSystemInterconnect),即开放式系统互联。一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO为了更好的使网络应用更为普及,推出了O…

    2022年4月4日
    35
  • js判断字符串数组是否包含某个字符串_怎么判断数组有几个元素

    js判断字符串数组是否包含某个字符串_怎么判断数组有几个元素方法一:indexOf(item,start)Item:要查找的值;start:可选的整数参数,缺省则从起始位子开始查找。indexOf()返回元素在数组中的位置,如果没有则返回-1,该方法只能查找字符串,数字等,不能查找类或者数组或者NaN,如果想查找类或者数组,可以使用下面介绍的其他方法;vararr=[‘a’,’b’,’c’,’d’];console.log(arr.indexOf(‘b’)); //1console.log(arr.indexOf(‘ab’))

    2022年10月18日
    7
  • bs模型的通俗理解_白话

    bs模型的通俗理解_白话要想不用一个数学模型只用大白话说明白Black-Scholes这个伟大的期权类衍生品定价模型,似乎与用地球语言解释火星文化一样的困难。所以我的所谓白话也不可能是真的大白话了,总要摆出几个简单的数模以说明问题。只不过这些数学上的东西我相信有一点数学和统计学基础的朋友都能看的明白了。事实上即使摆出一大堆数学模型,我也没有能力真的写出其推导的全过程。幸好我的目的不是写清楚BS模型的推导,而是从其原理性的

    2022年4月19日
    46
  • Manus邀请码获取与注册详细教程

    Manus邀请码获取与注册详细教程

    2026年3月15日
    2
  • 三次B样条曲线拟合算法

    三次B样条曲线拟合算法三次B样条曲线方程B样条曲线分为近似拟合和插值拟合,所谓近似拟合就是不过特征点,而插值拟合就是通过特征点,但是插值拟合需要经过反算得到控制点再拟合出过特征点的B样条曲线方程。这里会一次介绍两种拟合算法。首先介绍B样条的曲线方程。B样条曲线的总方程为:P(t)=∑ni=0PiFi,k(t)P(t)=\sum_{i=0}^{n}P_{i}F_{i,k}(t)(1)其中PiP_i是控制曲

    2022年6月18日
    29
  • ps修图教程新手入门:如何用Photoshop处理证件照「建议收藏」

    ps修图教程新手入门:如何用Photoshop处理证件照「建议收藏」今天小编给大家讲解如何用Photoshop处理证件照,证件照是大家生活中经常要用到的,相信很多同学碰到过需要给背景照换颜色的时候,却不知道如何更换背景颜色。我们平时照的证件照,一般都是红底,这时我们遇到要蓝底的时候怎么办呢?下面讲解ps修图教程新手入门如何用Photoshop处理证件照。下面,以一寸照片为例,讲解如何用Photoshop制作证件照。1、电脑操作2、ps软件:AdobePhotoshop2017(演示)一、ps改变尺寸1、打开证件照原件(图片小编从网上下载了一张,并打码

    2022年6月26日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号