密码学数论基础部分总结之 有限域GF(p) Galois Fields
今天花了一下午的时间学习密码学的数论部分,下面将学到的内容进行一下总结,也算是加深记忆。我本身对密码学这方面比较感兴趣,而且本节出现了许多数学公式,使用刚刚学习的LaTex公式来呈现出来,练习练习,何乐而不为。
首先给出了群,交换群(阿贝尔群),环,交换环,整环,域的定义,大致如下图所示:
涉及到的第一个重要的新概念就是有限域$GF(p)$ Galois Fields
有限域的元素个数是一个素数的幂$p^n$,n为正整数,一般记为$GF(p^n)$,我们最为关注的只有两种情况:n=1即$GF(p)$;p为2即$GF(2^n)$。
$GF(p)$的空间是模p的完全剩余类$Z_p : \left\{0, 1, \cdots, p-1 \right\}$
$GF(2^n)$中的的元素是系数为二进制0和1的多项式,最高不超过n-1次。一个元素可以被表示成一个长度为n的位矢量。例如二进制数$11001_2$在$GF(2^5)$中可以记作$x^4+x^3+1$
这样来看,$GF(p)$和$GF(2^n)$域中的元素都可以用多项式来表示,一个多项式可以被表示成如下形式:$$f(x)=a_{n}x^n+a_{n-1}x^{n-1}+\cdots+a_{1}x+a_0=\sum^n_{i=0}a_{i}x^i$$
下面是重头戏,如何计算?针对三种不同的作用域我们定义了三种不同的多项式运算。
1.普通多项式运算。这个不必多说,从小学初中就开始学,就是我们认识的普通多项式。
2.系数在$Z_p$中的多项式运算。和普通多项式运算不同的是,系数要进行模p运算。模可以是任意素数,一般取二,是最简单的情况。例如:$$f(x)=x^3+x^2+1,\ \ g(x)=x^2+x+1\\f(x)+g(x)=x^3+x,\ \ f(x)\times g(x)=x^5+x+1$$
可见多项式的系数在运算的时候进行了模2处理。
3.有限域$GF(2^n)$上的多项式运算。这种运算和计算机的运作方式很相似,对于一个有限域$GF(2^n)$我们定义如下要求:系数对2取模运算,最高次数小于n,多项式对n次素多项式取模运算。既然是域那就有逆元,可以用拓展欧几里得算法求逆。
下面分别介绍在$GF(2^n)$上的四则运算:
1.加法(减法)
$GF(2^n)$上的加法即比特串的异或运算,因为是异或,加减其实是一样的,都是异或而已。$$(x^2+1)+(x^2+x+1)=x\\101_2\oplus 111_2=010_2$$
2.乘法
乘法即比特串的移位和异或运算。实际运算的时候和普通乘法很像,只不过加法变成了异或。下面的运算用了一个小技巧,异或的结果只和参与异或的1的个数有关,奇数则为1,偶数则为0。$$\ \ \ 101\\ \underline{\times011}\\ \ \ \ 101\\ \ \underline{1010}\\ \ 1111$$
或者可以表示为$011_2\times 101_2=(101_2)<<1\oplus (101_2)<<0=1111_2$其中<<为移位符。
3.取模
读者可能会好奇,为什么没有除法。这是因为在$GF(2^n)$上取模运算就相当于除法啦。多项式取模有一个简单的算法,重复用既约多项式剪掉最高次项。下面是一个极其简单的例子。$$(x^3+x^2+x+1)mod(x^3+x+1)=x^2\\1111_2mod1011_2=1111_2\oplus 1011_2=100_2$$
这个例子过于简单,如果用$(x^9+x^8+x^6+x^4+x^3+x^2+x+1)mod(x^4+x+1)$即$1101011111mod10011$有两种做法,一种是在被除数后面补上三个0(除数四位 4-1=3),然后像做除法一样除掉除数10011,如果最高位是1就添1,是零就直接写0,最后得到余数0010。还有一种等价做法就是用除数的最高位和被除数的最高位对齐。减(异或)一次,然后继续这个过程直到产生余数。
密码学数论基础部分总结之 有限域GF(p) Galois Fields相关推荐
- 【考研—密码学数论基础】环、群、域、多项式运算
注:下述笔记根据 学习通公开课程<数学的思维方式与创新>,部分内容并非严谨数学定义,个人理解居多. 注2:第一遍学的时候理解得太片面了,面试被问到了才意识到理解得有问题,特此重新更正 Pr ...
- 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)
摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...
- 应用密码学数学基础习题之设有限域GF(28)的不可约多项式为p(x)=x8+x4+x3+x+1
题目:设有限域GF(28)的不可约多项式为p(x)=x8+x4+x3+x+1,写出多项式A(x)=x7+x4+x3+x2+x+1,B(x)=x6+x4+x2+x+1的二进制表示, 并求GF(28)的多 ...
- RSA加密原理详解,以及RSA中的数论基础
文章目录 1. RSA加密算法介绍 2. RSA密钥生成 3. RSA加密和解密 4. RSA的安全性 5.涉及到的数论基础 5.1. 模的逆元 5.1.1. 扩展欧几里得算法计算模逆元 5.1.2. ...
- matlab有限域多项式除法_有限域GF(2^8)的四则运算及拉格朗日插值
域的性质: 群和域在数学上的概念就不解释,可以参考维基百科.当然也可以参考<密码编码学与网络安全>这书的有限域一章.形象地说,域有这样一个性质:在加法和乘法上具有封闭性.也就是说对域中的元 ...
- 数论基础,从入门到入门
数论基础,从入门到入门 文章目录 数论基础,从入门到入门 一.常用算法 1.素数筛法 2.线性筛 3.快速幂 4.矩阵快速幂 5.辗转相除法/欧几里得算法 6.扩展欧几里得 7.中国剩余定理/CRT ...
- CTF密码学-编码基础知识点总结
CTF密码学-编码基础知识点总结 0x01 目录 常见编码: 1.ASCII编码 2.Base64/32/16编码 3.shellcode编码 4.Quoted-printable编码 5.XXenc ...
- 数论基础:模奇素数的二次剩余 (1)
注意: 本文讨论的是模奇素数的二次剩余 目前不打算写二次互反律,不易写明白 什么是二次剩余 求解模小素数的二次同余方程 求解模小素数的二次方程,只需要遍历 Zp⋆\mathbb{Z}_p^{\star ...
- 浅谈密码学中数论基础
1.模运算(mod) 模运算也可以称为取余运算,例如 23≡11(mod12),因此如果a=kn+b,也可以表示为a ≡ b(mod n),运算规则: (a+b) mod n = ((a mod n) ...
最新文章
- 计算机组成定点数的编码,2.1.1 定点数的表示
- Android背景渐变色(shape,gradient)
- python常见内置函数_python常见的内置函数
- Python爬虫自学之第(⑤)篇——爬取某宝商品信息
- “出道” 5 年采用率达 78%,Kubernetes 的成功秘诀是什么?
- mysql字段分隔符拆分_面试题Mysql数据库优化之垂直分表
- SSL证书检查吊销状态
- C语言中未显示声明函数返回值的类型
- C#.Net工作笔记017---C#事件的理解以及自定义事件的方法
- 解决Flex4 发布后访问 初始化极其缓慢的问题
- dhcp、tftp基础
- 关于GomezPeer赚钱的可行性调查
- Windows 恢复使用老版的图片查看器
- [应用漏洞]OpenSSH scp命令注入漏洞(CVE-2020-15778)
- NYOJ234吃土豆
- 3w服务器把信息组织成,HTML小白入坑日记~qwq
- 【毕业设计】基于java web的医院预约挂号系统
- 数据来源渠道及采集工具_几款简单好用的爬虫抓取数据采集工具
- C#学习笔记(五)CSharp操作符-基本操作符(一)
- send sendto ,recv recvfrom有什么区别