(一)密码学之数论基础
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 ...
最新文章
- 这是2018年的第一场AI生态论坛,比以往来得更早一些
- R语言text函数在R原生可视化结果中添加文本标签、内容:指定文本显示的位置、颜色、字体大小等(Position、Change Color 、 Size of Text)
- Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)...
- caffe loss层
- Python要点总结,我使用了100个小例子!
- mysql percona 密码设置_Percona mysql5.7 默认密码
- 每周进步要点(第50周12.4-12.11)
- oracle常用的一些sql命令
- 【语音识别】基于matlab GUI语音识别信号灯图像模拟控制(带面板)【含Matlab源码 757期】
- ansys通过扫掠(sweep)方法划分网格的方法
- 相聚 桂林电子科技大学第三届ACM程序设计竞赛
- 房产中介管理系统搭建
- kali linux修改dns,Kali Linux 设置动/静态IP地址以及修改DNS
- 冥王星P的编曲日志《我们就这样溺死在漩涡里》
- 人工智能中,自动驾驶汽车是如何自动识别交通标志的?
- raid卡缓存对硬盘性能_服务器RAID配置方法大全
- 又dota了......
- html实现ipad投屏到显示器,iPad投屏的两种方式
- JAVA实现动态数组【代码】
- Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...
热门文章
- Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目
- C/C++实现荷兰国旗问题
- 预言:ALEXA工具条即将进行大规模升级(转)
- c语言 鼠标指针图标,WIN7系统鼠标图案DIY!自己动手,美不胜收!-win7鼠标指针...
- [Pyecharts 可视化] B站推荐视频分析
- 调查:2013年十大急需的热门IT技能
- Linux系统的镜像文件下载
- 火山PC模块使用案例-动态创建多个组件教程
- 机器学习实战——房价预测完整案例(建议收藏慢慢品)
- 使用cmd命令删除服务