主要是为了密码学整理的。(这排版真是。。我真的不知道怎么弄,谁能帮帮我)

欧几里得算法

  • 欧几里得算法或者叫做辗转相除法,是指用于计算两个正整数a,b的最大公约数。

    gcd(a,b)=gcd(b,amodb)(1) (1) g c d ( a , b ) = g c d ( b , a m o d b )

    gcd(a,b) = gcd(b,a mod b)\tag{1}

eg: 计算45和12的最大公约数。
  gcd(45,12) = gcd(12,9)
  gcd(12,9) = gcd(9,3)
  gcd(9,3) = gcd(3,0)
所以,45和12的最大公约数是3.


扩展欧几里得算法

给予二整数 a 与 b, 必存在有整数 x 与 y 使得

ax+by=gcd(a,b)=gcd(b,amodb)=bx+(amodb)y(2) (2) a x + b y = g c d ( a , b ) = g c d ( b , a m o d b ) = b x + ( a m o d b ) y

ax + by = gcd(a,b) = gcd(b,a mod b) = bx + (a mod b)y\tag{2}

  • 先将表达式按上面的公式做到底, Mul=y的系数/x的系数 M u l = y 的 系 数 / x 的 系 数 Mul = y的系数 / x的系数;
  • 再逆溯回去,得到x和y的值。
  • 逆溯方法: tmp=y;y=x;x=tmp−mul∗x t m p = y ; y = x ; x = t m p − m u l ∗ x tmp = y; y = x; x = tmp - mul * x 。

应用

  • 在有限域中求某个数的逆 。
    eg:在Z26上求17的逆。
  Mul   Expression   Trace Back
  mul:1 26y+17x=1(mod26) 26 y + 17 x = 1 ( m o d 26 ) 26y + 17x = 1 (mod 26) tmp=−1,y=2,x=−1−1×2=−3 t m p = − 1 , y = 2 , x = − 1 − 1 × 2 = − 3 tmp = -1, y = 2, x = -1 - 1 \times 2 = -3
  mul:1 17y+9x=1(mod26) 17 y + 9 x = 1 ( m o d 26 ) 17y + 9x = 1 (mod 26) tmp=1,y=−1,x=1−1×(−1)=2 t m p = 1 , y = − 1 , x = 1 − 1 × ( − 1 ) = 2 tmp = 1, y = -1, x = 1 - 1 \times (-1) = 2
  mul:1 9y+8x=1(mod26) 9 y + 8 x = 1 ( m o d 26 ) 9y + 8x = 1 (mod 26) tmp=0,y=1,x=0−1×1=−1 t m p = 0 , y = 1 , x = 0 − 1 × 1 = − 1 tmp = 0, y = 1, x = 0 - 1 \times 1 = -1
  mul:8 8y+1x=1(mod26) 8 y + 1 x = 1 ( m o d 26 ) 8y + 1x = 1 (mod 26) tmp=1,y=0,x=1−8×0=1 t m p = 1 , y = 0 , x = 1 − 8 × 0 = 1 tmp = 1, y = 0, x = 1 - 8 \times 0 = 1
  mul:- 1y+0x=1(mod26) 1 y + 0 x = 1 ( m o d 26 ) 1y + 0x = 1 (mod 26) tmp=−,y=1,x=0 t m p = − , y = 1 , x = 0 tmp = -, y = 1, x = 0

17的逆元是-3,在该域上就是 26−3=23 26 − 3 = 23 26-3=23。

  • 在有限域中求多项式的逆
    有限域 GF(28) G F ( 2 8 ) GF(2^8)使用 Z2[x] Z 2 [ x ] Z_2[x]上的不可约多项式 m(x)=x8+x4+x3+x+1 m ( x ) = x 8 + x 4 + x 3 + x + 1 m(x) = x^8 + x^4 + x^3 + x + 1来构造。该有限域应用于AES加密算法S盒的构造。
    eg:求0x4E的逆元。

    1. 0x4E = (0100,1110)2,将0x4E表示为 Z Z Z2[x]上的多项式 x6+x3+x2+x" role="presentation" style="position: relative;">x6+x3+x2+xx6+x3+x2+xx^6 + x^3 + x^2 + x。
    2. 和数字方法处理的步骤一样,只是运算在多项式上,多项式运算加减是一样的,并且都是模( x8+x4+x3+x+1 x 8 + x 4 + x 3 + x + 1 x^8 + x^4 + x^3 + x + 1)的。
      eg:(具体除法我还不知道在markdown上怎么写。。先这样)
      x8+x4+x3+x+1x6+x3+x2+x=x2........x5+x+1 x 8 + x 4 + x 3 + x + 1 x 6 + x 3 + x 2 + x = x 2 . . . . . . . . x 5 + x + 1 \frac{x^8 + x^4 + x^3 + x + 1}{x^6 + x^3 + x^2 + x} = x^2........x^5 + x + 1
      先将Mul和Expression按公式(2)拓展到(x)y+z=1 的形式,在这种情况下,y只能是0,z只能是1,然后再通过回溯得到多项式的逆
  Mul   Expression   Trace Back
  mul: x2 x 2 x^2 (x8+x4+x3+x+1)y+(x6+x3+x2+x)z=1(modx8+x4+x3+x+1) ( x 8 + x 4 + x 3 + x + 1 ) y + ( x 6 + x 3 + x 2 + x ) z = 1 ( m o d x 8 + x 4 + x 3 + x + 1 ) (x^8 + x^4 + x^3 + x + 1)y + (x^6 + x^3 + x^2 + x)z = 1 (mod x^8 + x^4 + x^3 + x + 1) tmp=x4+x3+x2+1,y=x5+x4+x3+x2+1,z=x7+x6+x5+x3+1 t m p = x 4 + x 3 + x 2 + 1 , y = x 5 + x 4 + x 3 + x 2 + 1 , z = x 7 + x 6 + x 5 + x 3 + 1 tmp = x^4 + x^3 + x^2 + 1, y = x^5 + x^4 + x^3 + x^2 + 1, z = x^7 + x^6 + x^5 + x^3 + 1
  mul: x x x (x6+x3+x2+x)y+(x5+x+1)z=1" role="presentation" style="position: relative;">(x6+x3+x2+x)y+(x5+x+1)z=1(x6+x3+x2+x)y+(x5+x+1)z=1(x^6 + x^3 + x^2 + x)y + (x^5 + x + 1)z = 1 tmp=x2+x+1,y=x4+x3+x2+1,z=x5+x4+x3+x2+1 t m p = x 2 + x + 1 , y = x 4 + x 3 + x 2 + 1 , z = x 5 + x 4 + x 3 + x 2 + 1 tmp = x^2 + x + 1, y = x^4 + x^3 + x^2 + 1, z = x^5 + x^4 + x^3 + x^2 + 1
  mul: x2 x 2 x^2 (x5+x+1)y+(x3)z=1 ( x 5 + x + 1 ) y + ( x 3 ) z = 1 (x^5 + x + 1)y + (x^3)z = 1 tmp=1,y=x2+x+1,z=x4+x3+x2+1 t m p = 1 , y = x 2 + x + 1 , z = x 4 + x 3 + x 2 + 1 tmp = 1, y = x^2 + x + 1, z = x^4 + x^3 + x^2 + 1
  mul: x2 x 2 x^2 (x3)y+(x+1)z=1 ( x 3 ) y + ( x + 1 ) z = 1 (x^3)y + (x + 1)z = 1 tmp=x+1,y=1,z=x2+x+1 t m p = x + 1 , y = 1 , z = x 2 + x + 1 tmp = x + 1, y = 1, z = x^2 + x + 1
  mul:0 (x+1)y+(x2)z=1 ( x + 1 ) y + ( x 2 ) z = 1 (x + 1)y + (x^2)z = 1 tmp=1,y=x+1,z=1 t m p = 1 , y = x + 1 , z = 1 tmp = 1, y = x + 1, z = 1
  mul:x (x2)y+(x+1)z=1 ( x 2 ) y + ( x + 1 ) z = 1 (x^2)y + (x + 1)z = 1 tmp=1,y=1,z=x+1 t m p = 1 , y = 1 , z = x + 1 tmp = 1, y = 1, z = x + 1
  mul:1 (x+1)y+(x)z=1 ( x + 1 ) y + ( x ) z = 1 (x + 1)y + (x)z = 1 tmp=0,y=1,z=1 t m p = 0 , y = 1 , z = 1 tmp = 0, y = 1, z = 1
  mul:- (x)y+z=1 ( x ) y + z = 1 (x)y + z = 1 tmp=−,y=0,z=1 t m p = − , y = 0 , z = 1 tmp = -, y = 0, z = 1

所以, x6+x3+x2+x x 6 + x 3 + x 2 + x x^6 + x^3 + x^2 + x在有限域 GF(28) G F ( 2 8 ) GF(2^8)上的逆元是 x7+x6+x5+x3+1 x 7 + x 6 + x 5 + x 3 + 1 x^7 + x^6 + x^5 + x^3 + 1;0x4E的逆元是0xE9。
(未完待续。。)

欧几里得算法和扩展欧几里得相关推荐

  1. [模板]欧几里得算法/扩展欧几里得

    最大公因数(欧几里得算法) $gcd(a,b)=gcd(b\%a,a)$(不一定需要a<b) $gcd(0,b)=b$ 1 inline int gcd(int a,int b){ 2 retu ...

  2. 欧几里得算法扩展欧几里得

    本文包括: 1.几里德算法 递归实现 2.扩展欧几里德算法 递归实现 -实际上就是把别人总结的,我认为有助于自己理解的内容copy过来,再加上几句自己的理解. 欧几里得算法 欧几里德算法又称辗转相除法 ...

  3. 欧几里得算法(扩展欧几里得、欧拉定理、费马小定理)

    问题描述: a 和 b的最大公约数是多少? 古代解法:辗转相除法 迭代过程:例如: {a = 15 和 b = 12  } =>{ a = 12,b =  15 - (15/12)* 12 = ...

  4. 欧几里得算法和扩展欧几里得算法——杨子曰数学

    欧几里得算法和扩展欧几里得算法--杨子曰数学 超链接:数学合集 不说废话,咱们直接开始 欧几里得算法 一句话: g c d ( a , b ) = g c d ( b , a m o d b ) gc ...

  5. 逆元+费马小定理+扩展欧几里得

    逆元:(即是逆元素)逆元素是指一个可以取消另一给定元素运算的元素. 在一个代数系统(S,*)中,存在单位元素e,如果对S内的元素a存在a^-1 * a = e,则将 a^-1称为a 的左逆元. 同理若 ...

  6. 欧几里得与扩展欧几里得总结

    欧几里得 来看看一个常见的\(gcd\)代码 int Gcd(a,b){return (b==0)?a:Gcd(b,a%b); } 入门的一个知识吧,但是你会证明吗? \(emmm\) 好吧我就只是背 ...

  7. 欧几里得和扩展欧几里得

    别人总结的,很详细,http://www.cnblogs.com/frog112111/archive/2012/08/19/2646012.html 欧几里得算法,就是人们常说的辗转相除法,比较好理 ...

  8. 求解线性同余方程--扩展欧几里得

    资料来源:https://blog.csdn.net/ //求解ax=b(mod m) 返回0为无解,否则返回gcd(a,m)个mod m意义下的解,用X[]存 int mod(int a, int ...

  9. 欧几里德 与 扩展欧几里得 学习笔记

    最近学了学扩展欧几里得,总结一下 欧几里得算法 欧几里得算法主要用来求a,b的最大公约数,又称为gcd 代码 int Gcd(int a,int b) {if(b==0) return a;else ...

最新文章

  1. 调整显示屏幕偏移和刷新频率[zt]
  2. 在gridview里查找模板里的button控件
  3. Web 服务策略断言语言 (WS-PolicyAssertions)
  4. python软件菜单如何设计_佩服!我用Python设计了一个签名软件
  5. Andriod Atom x86模拟器启动报错
  6. sublime后缀_在sublime text中如何设置某种扩展名文件的默认语法
  7. 浅谈算法和数据结构: 三 合并排序
  8. MATLAB--数字图像处理 频域图像分析
  9. Mysql函数group_concat、find_in_set进行数据库字段值翻译
  10. Python 安装pytz
  11. java 分贝_java – wav文件中特定点的分贝值
  12. 关于pthread_cancel()的运用,取消点的理解
  13. 2021-02-01 25 个常用 Matplotlib 图的 Python 代码
  14. 【Multisim仿真】NE555组成的振荡器电路(占空比可调)
  15. A Pixel-Wise Distance Regression Approach for Joint Retinal Optical Disc and Fovea Detection
  16. vlan的端口隔离及端口优化——“道高一尺魔高一丈”
  17. 数据分析案例-基于随机森林算法的商品评价情感分析
  18. php 直接显示缩略图,PHP自动生成缩略图函数的源码示例
  19. python通讯录管理系统 tk_通讯录管理系统
  20. PC客户端数据分析工具Fiddler+Proxifer

热门文章

  1. python基于web的安装程序_python web.py安装使用
  2. 基于CAN总线的多路温度检测系统设计-毕设课设资料
  3. BusyBox 的配置
  4. 学计算机基础word题,大学计算机基础word练习题及详解答案.doc
  5. 清默网络——IPV6的地址详解
  6. <artifactId>里面的字符串不能有空格
  7. Excel切片器的使用
  8. 中国田联要求:刘翔和王军霞生个孩子!
  9. 19-Linux计划任务
  10. (Nginx出现403 forbidden)nginx权限问题failed(13:Permission denied)