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. 浅谈密码学中数论基础

    1.模运算(mod) 模运算也可以称为取余运算,例如 23≡11(mod12),因此如果a=kn+b,也可以表示为a ≡ b(mod n),运算规则: (a+b) mod n = ((a mod n) ...

  2. 密码学数论基础部分总结之 有限域GF(p) Galois Fields

    今天花了一下午的时间学习密码学的数论部分,下面将学到的内容进行一下总结,也算是加深记忆.我本身对密码学这方面比较感兴趣,而且本节出现了许多数学公式,使用刚刚学习的LaTex公式来呈现出来,练习练习,何 ...

  3. 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)

    摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...

  4. RSA加密原理详解,以及RSA中的数论基础

    文章目录 1. RSA加密算法介绍 2. RSA密钥生成 3. RSA加密和解密 4. RSA的安全性 5.涉及到的数论基础 5.1. 模的逆元 5.1.1. 扩展欧几里得算法计算模逆元 5.1.2. ...

  5. 数论基础,从入门到入门

    数论基础,从入门到入门 文章目录 数论基础,从入门到入门 一.常用算法 1.素数筛法 2.线性筛 3.快速幂 4.矩阵快速幂 5.辗转相除法/欧几里得算法 6.扩展欧几里得 7.中国剩余定理/CRT ...

  6. 数论基础:模奇素数的二次剩余 (1)

    注意: 本文讨论的是模奇素数的二次剩余 目前不打算写二次互反律,不易写明白 什么是二次剩余 求解模小素数的二次同余方程 求解模小素数的二次方程,只需要遍历 Zp⋆\mathbb{Z}_p^{\star ...

  7. 密码学复习(密码学及其信息安全基础)(陈小松)

    密码学复习(密码学及其信息安全基础)(陈小松) 整除与同余 1 2 经典密码 概念 凯撒密码 仿射密码 维吉尼亚密码 费尔南密码 普莱费尔密码 希尔密码 现代密码 1 2 整除与同余 1 2 经典密码 ...

  8. 【考研—密码学数论基础】环、群、域、多项式运算

    注:下述笔记根据 学习通公开课程<数学的思维方式与创新>,部分内容并非严谨数学定义,个人理解居多. 注2:第一遍学的时候理解得太片面了,面试被问到了才意识到理解得有问题,特此重新更正 Pr ...

  9. 【数论】ACM数论基础知识总结

    文章目录 一.质数 1.定义 2.质数的判断 3.质数的筛选 4.质因子分解 5.互质 二.同余 1.模运算 2.同余 3.欧拉定理 4.同余方程 5.同余方程组 6.原根 7.高次同余方程 数论是数 ...

  10. 紫薯第10章数学 kaungbin专题14数论基础

    杂谈 kuangbin14数论Harmonic Number LightOJ - 1234 分段打表 + 欧拉爷爷o(1).(第一次触及了欧拉常熟) 10.1.1 && 10.1.2 ...

最新文章

  1. 这是2018年的第一场AI生态论坛,比以往来得更早一些
  2. R语言text函数在R原生可视化结果中添加文本标签、内容:指定文本显示的位置、颜色、字体大小等(Position、Change Color 、 Size of Text)
  3. Android编程获取手机型号,本机电话号码,sdk版本及firmware版本号(即系统版本号)...
  4. caffe loss层
  5. Python要点总结,我使用了100个小例子!
  6. mysql percona 密码设置_Percona mysql5.7 默认密码
  7. 每周进步要点(第50周12.4-12.11)
  8. oracle常用的一些sql命令
  9. 【语音识别】基于matlab GUI语音识别信号灯图像模拟控制(带面板)【含Matlab源码 757期】
  10. ansys通过扫掠(sweep)方法划分网格的方法
  11. 相聚 桂林电子科技大学第三届ACM程序设计竞赛
  12. 房产中介管理系统搭建
  13. kali linux修改dns,Kali Linux 设置动/静态IP地址以及修改DNS
  14. 冥王星P的编曲日志《我们就这样溺死在漩涡里》
  15. 人工智能中,自动驾驶汽车是如何自动识别交通标志的?
  16. raid卡缓存对硬盘性能_服务器RAID配置方法大全
  17. 又dota了......
  18. html实现ipad投屏到显示器,iPad投屏的两种方式
  19. JAVA实现动态数组【代码】
  20. Java读取UTF-8格式txt文件第一行出现乱码及解决;Java读带有BOM的UTF-8文件乱码原因及解决方法(转载)...

热门文章

  1. Android 视频直播 ( 从快播到直播,从高清到无码 )十年视频开发项目
  2. C/C++实现荷兰国旗问题
  3. 预言:ALEXA工具条即将进行大规模升级(转)
  4. c语言 鼠标指针图标,WIN7系统鼠标图案DIY!自己动手,美不胜收!-win7鼠标指针...
  5. [Pyecharts 可视化] B站推荐视频分析
  6. 调查:2013年十大急需的热门IT技能
  7. Linux系统的镜像文件下载
  8. 火山PC模块使用案例-动态创建多个组件教程
  9. 机器学习实战——房价预测完整案例(建议收藏慢慢品)
  10. 使用cmd命令删除服务