密码学数论基础部分总结之 有限域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的更多相关文章
- 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)
摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...
- 「kuangbin带你飞」专题十四 数论基础
layout: post title: 「kuangbin带你飞」专题十四 数论基础 author: "luowentaoaa" catalog: true tags: mathj ...
- 公钥体系(PKI)等密码学技术基础
公钥体系(PKI)等密码学技术基础 公钥体系(Public Key Infrastructure, PKI)的一些概念 对称密码算法, 典型算法:DES, AES 加解密方共用一个密钥 加/解密速度快 ...
- CTF中密码学一些基础
本文作者:i春秋签约作家MAX. 凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密. 给大家先找两道题,来一起探讨基础密码学 ...
- 密码学的基础:X.690和对应的BER CER DER编码
目录 简介 BER编码 类型标识符 长度 内容 CER编码和DER编码 总结 简介 之前我们讲到了优秀的数据描述语言ASN.1,很多协议标准都是使用ASN.1来进行描述的.对于ASN.1来说,只定义了 ...
- lightoj1336数论基础
#include<iostream> #include<cstdio> #include<cmath> #define ll long long using nam ...
- 数论基础算法总结(python版)
/* Author: wsnpyo Update Date: 2014-11-16 Algorithm: 快速幂/Fermat, Solovay_Stassen, Miller-Rabin素性检验/E ...
- 从BZOJ2242看数论基础算法:快速幂,gcd,exgcd,BSGS
LINK 其实就是三个板子 1.快速幂 快速幂,通过把指数转化成二进制位来优化幂运算,基础知识 2.gcd和exgcd gcd就是所谓的辗转相除法,在这里用取模的形式体现出来 \(gcd(a,b)\) ...
- 1370 - Bi-shoe and Phi-shoe(LightOJ1370)(数论基础,欧拉函数)
http://lightoj.com/volume_showproblem.php?problem=1370 欧拉函数: 在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目. φ(n) ...
随机推荐
- Python3高级核心技术97讲
可以毫不夸张的说:这门课程是初中级Python开发人员向高级进阶的必学课程 许多Pythoner喜欢追求新的框架,但却不重视Python本身基础知识的学习, 他们不知道的是,语言本身的进阶优先于框架, ...
- c# 优化代码的一些规则——const 和 readonly[二]
前言 在c# 的世界中,在初学的时候,可能很难区分readonly 和 const,两者都是不可修改. 看到这两个单词,我们想的是,最多他们的区别也不会太大.然后事实却出乎我们的意料. 正文 这两个声 ...
- 才华能力出众的ReentrantLock
主要内容 1. synchronized介绍 2. ReentrantLock介绍 3. ReentrantLock和synchronized的可伸缩性比较 4. Condition变量 5. Ree ...
- SD.Team团队人物形象
AC Mount Zergling Horse Preacher Alpha 注:无排名,仅按搞出来的时间先后排列.SD.Team犯罪团伙!!!!!!!! 本站文章为宝宝巴士 ...
- java方式实现希尔排序
一.希尔排序简述和基本思想 希尔排序也称递减增量排序算法,是插入排序的一种更高效的改进版本.但是希尔排序是非稳定排序的算法.希尔排序比一般插入排序有以下几点改进: 一般插入排序每次只能将数据移动一位, ...
- 完美解决报错Failed to convert value of type 'java.lang.String' to required type 'java.util.Date'
Failed to convert value of type 'java.lang.String' to required type 'java.util.Date' 首先这个错误的意思是 前台页面 ...
- word dde payload
payload: ctrl+F9 {DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" } Since this techni ...
- Rocket - util - IDPool
https://mp.weixin.qq.com/s/Pe7FGKzfRufzzYDrl0fQ7g 介绍IDPool的实现. 1. 基本介绍 实现从ID池中分配和释放ID的功能. ...
- 我眼中的华为公有云AI平台--ModelArts
前言 AWS Sagemaker has been a great deal for most data scientists who would want to accomplish a truly ...
- Linux(二) 系统远程访问
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1. Why?为什么需要远程访问? 人和人之间对话有两种方式,一种是面对面直接交谈,另一种是打电话. 我 ...