(一)密码学之数论基础
1,数论基础
1.1,欧几里得算法:
如果a=bq+r, b≠0且a、b、q、r为整数,则 gcd(a, b)=gcd(b, r);
其实这就是除法求余的过程:我们令a=b,b=a/b®;也叫辗转相除法啊。
于是,我们还有另外一种形式:gcd(a, b)=gcd(b, a (mod b))
//这里贴一下欧几里得算法
//递归形式的更加清晰
int ojld(int m,int n){if(m%n==0){return n;}return ojld(n,m%n);
}
1.2,扩展欧几里得算法
问题引入:
对于整数a和正整数b,当gcd(a, b)=1时存在整数c, 使得ac ≡ 1 (mod b);称c为a关于模b的乘法逆元,记为a−1a^{-1}a−1。
对于给定的整数a和b,扩展的欧几里得算法不仅可以计算出最大公因子d,而且还有另外两个整数s和t,使得满足如下方程:
as+bt = d = gcd(a, b)。
另外,根据互素的性质,存在s和t,使得as+nt=1,而nt≡0 (mod n),所以s是a关于模n的乘法逆元,即a−1=sa^{-1}=sa−1=s。由此,我们可以使用扩展欧几里得算法求解逆元了。注意,乘法逆元不唯一,但在mod n下是唯一的。
计算方法:采取添加单位矩阵的方式,进行列变换,直到某列出现1。此时我们将当前列中的绝对值大数乘以原式中的小数,类似即可得到我们想要的结果。
如果(a mod n) = (b mod n),那么称a,b模n同余,记为 a≡bmodna \equiv b \bmod na≡bmodn;
费马定理:如果p是素数,并且a是不能被p整除的正整数,则ap−1≡1(modp)a^{p-1}≡1 (mod p)ap−1≡1(modp);
另一等价形式:如果p是素数,a是任意的正整数且gcd(a, p)=1,则有ap≡a(modp)a^{p}≡a (mod p)ap≡a(modp)。
欧拉函数:欧拉函数φ(n)表示比n小且与n互素的正整数的个数。
欧拉函数具有如下性质:
1,当n是素数时,有φ(n)=n-1;因为素数与每一个小于他的数都是互素关系
2,当n=pq,且p和q是互异的素数时,则有φ(n)=φ(pq)=φ§×φ(q)=(p-1)×(q-1);
证明:φ(pq)=φ( p)×φ(q)
参考中国剩余定理:
设a与p互素,b与q互素,c与pq互素;则c与(a,b)一一对应关系;
又由于a的值有φ§种可能,b的值有φ(q)种可能,c的值有φ(pq)种可能,而(a,b)有φ( p)φ(q)种可能;所以φ(pq)=φ( p)×φ(q)。
3,φ(pk)=pk−pk−1=pk(1−1p)φ(p^{k})=p^{k}-p^{k-1}=p^{k}(1-\frac{1}{p})φ(pk)=pk−pk−1=pk(1−p1),因为pkp^{k}pk个数减去所有p的倍数即为p的质数;
欧拉定理:
任意互素的两个整数a(a≠0)和n(n>1),且gcd(a, n)=1,则:
aφ(n)≡1(modn)a^{φ(n)}≡1 \pmod {n}aφ(n)≡1(modn)或aφ(n)+1≡a(modn)a^{{φ(n)+1}}≡a \pmod naφ(n)+1≡a(modn)
如果n为素数p,则φ(n)=φ§=p-1,即为费马定理ap−1≡1(modp)a^{p-1}≡1 \pmod pap−1≡1(modp)。
离散对数:
(一)密码学之数论基础相关推荐
- 浅谈密码学中数论基础
1.模运算(mod) 模运算也可以称为取余运算,例如 23≡11(mod12),因此如果a=kn+b,也可以表示为a ≡ b(mod n),运算规则: (a+b) mod n = ((a mod n) ...
- 密码学数论基础部分总结之 有限域GF(p) Galois Fields
今天花了一下午的时间学习密码学的数论部分,下面将学到的内容进行一下总结,也算是加深记忆.我本身对密码学这方面比较感兴趣,而且本节出现了许多数学公式,使用刚刚学习的LaTex公式来呈现出来,练习练习,何 ...
- 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)
摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...
- RSA加密原理详解,以及RSA中的数论基础
文章目录 1. RSA加密算法介绍 2. RSA密钥生成 3. RSA加密和解密 4. RSA的安全性 5.涉及到的数论基础 5.1. 模的逆元 5.1.1. 扩展欧几里得算法计算模逆元 5.1.2. ...
- 数论基础,从入门到入门
数论基础,从入门到入门 文章目录 数论基础,从入门到入门 一.常用算法 1.素数筛法 2.线性筛 3.快速幂 4.矩阵快速幂 5.辗转相除法/欧几里得算法 6.扩展欧几里得 7.中国剩余定理/CRT ...
- 数论基础:模奇素数的二次剩余 (1)
注意: 本文讨论的是模奇素数的二次剩余 目前不打算写二次互反律,不易写明白 什么是二次剩余 求解模小素数的二次同余方程 求解模小素数的二次方程,只需要遍历 Zp⋆\mathbb{Z}_p^{\star ...
- 密码学复习(密码学及其信息安全基础)(陈小松)
密码学复习(密码学及其信息安全基础)(陈小松) 整除与同余 1 2 经典密码 概念 凯撒密码 仿射密码 维吉尼亚密码 费尔南密码 普莱费尔密码 希尔密码 现代密码 1 2 整除与同余 1 2 经典密码 ...
- 【考研—密码学数论基础】环、群、域、多项式运算
注:下述笔记根据 学习通公开课程<数学的思维方式与创新>,部分内容并非严谨数学定义,个人理解居多. 注2:第一遍学的时候理解得太片面了,面试被问到了才意识到理解得有问题,特此重新更正 Pr ...
- 【数论】ACM数论基础知识总结
文章目录 一.质数 1.定义 2.质数的判断 3.质数的筛选 4.质因子分解 5.互质 二.同余 1.模运算 2.同余 3.欧拉定理 4.同余方程 5.同余方程组 6.原根 7.高次同余方程 数论是数 ...
- 紫薯第10章数学 kaungbin专题14数论基础
杂谈 kuangbin14数论Harmonic Number LightOJ - 1234 分段打表 + 欧拉爷爷o(1).(第一次触及了欧拉常熟) 10.1.1 && 10.1.2 ...
最新文章
- ios在textview禁用tab的代码
- mysql体系结构:
- python列表切片口诀-Python-100例(7-8) 复制列表 打印乘法口诀
- innodb_monitor
- view.performClick()触发点击事件
- mysql导入数据load data infile用法整理
- 点评老师freeeim
- linux同步数据库,Linux两台服务器mysql数据库同步
- 降低深度学习开发门槛,“动态图+高层API”能带来多大的便利?
- Javaweb网易云音乐
- IDEA 2018下载及破解
- 解决VS 2017/2019社区版无法登陆的方法
- win10隐藏网络计算机,连接隐藏网络,教你win10系统电脑连接隐藏网络的方法
- 语言的流变_拔剑-浆糊的传说_新浪博客
- Outlook-没有自动回复-使用规则创建外出邮件
- java后台报错cant found font [times New Roman] installed on the system
- 05.python学习系列——画图库turtle(啥是小猪佩奇)
- Excel中同一单元格设置不同颜色的字体
- 如何把一组计算机做成云,怎样才能把旧电脑变成云电脑呢?
- 算法基础:快速排序题
热门文章
- [Windows] 蜂巢收纳盒 V2.0.4---桌面分类整理
- java电信面试问题及答案_大唐电信java笔试题及答案
- .net Reactor 使用说明详解
- jquery表单美化组件实例
- python爬去学校_利用Python如何爬取自己学校的官网?用这招就行!
- 用HTML5编写日历,js编写当天简单日历效果【实现代码】_javascript技巧
- Java+MySQL 基于ssm的宠物商店领养管理系统#毕业设计
- 计算机快捷方式app卸载,一打开电脑就自动出现的快捷方式软件删不掉怎么办
- contos7 方舟私服搭建
- WinForm超市商品管理系统