扩展欧几里得算法求逆元---乘法密码
欧几里得算法
背景知识:
欧几里得算法:又叫做辗转相除法,用来求两个数的最大公约数。通过辗转相除,当余数为0的时候,最后的除数就是两个数的最大公约数。
例如:求20和11的最大公约数
每次将除数作为下一个式子的被除数,将余数作为下一个式子的除数。
20➗11=1......9
11➗9=1......2
9➗2=4......1
2➗1=2......0
所以最大公约数为最后一个式子的除数1,即gcd(20,11)=1
扩展欧几里得算法与逆元
扩展欧几里得算法结论:对整数 a 与 b来说, 必存在整数 x 与 y 使得
ax + by = gcd(a,b)
注:具体证明此处不做展开
逆元定义:ax = 1(mod p),此时a与x互为逆元
例如a = 4,p = 11,由于4*3=12,12 mod 11 = 1,a=4在模11条件下的逆元为x=3。
为什么扩展欧几里得算法可以求解逆元:
由逆元定义可知满足ax%p=1,因此a与b互为逆元时,加上k倍的p也不影响,毕竟kp对p取余之后为0,所以可以将求逆元的过程转换成:ax+kp=1,此时a与p已知,这就成功转化成扩展欧几里得算法求解的形式,我们可以求出x和k,x即为a对应的逆元。
对于复杂式子我们不能直接看出对应的逆元,具体操作步骤如下所示。
例如:求11在(mod20)条件下的逆元
上个例子中求得:gcd(20,11)=1
代入扩展欧几里得式子:
11x+20y=1
具体求解方法如下所示(类似于欧几里得算法求解过程):
20=11*1+9 ----------①
11=9*1+2 ----------②
9=2*4+1 ----------③
写成上述的形式是类似于计算机求解过程,因此下面的移向操作并不是多此一举。
由式子①,②(移项)可得:
20-11*1=9 ----------④
11-9*1=2 ----------⑤
④带入⑤(目的是消去9,当求解过程中有很多式子时,就是这样一步步消去中间项)
11-(20-11*1)*1=2 ----------⑥
再将④和⑥代入③消去中间值9和2,可得:
20-11*1=(11-(20-11*1)*1)*4+1
合并同类项可得:
5*20-9*11=1
也就解除了最开始的式子11x+20y=1,得到x=-9,y=5
总结:对式子ax = 1(mod p)我们已知a和p,先求p=a*x1+p1(此时的p1实际上时p与a运算的余数),然后将p=a,a=p1代入式子不断进行迭代,直到计算出余数为1时,pi=a*xi+1,就可以不断移向消去中间项,最后计算出对应的逆元。
乘法密码
答疑:
图中是以英文字母为例,假设26个字母对应数字0-25
1.为什么k要与26互素
因为互素的条件下才能将0-25与k运算之后均匀的映射到每一个位置,否则肯定会有重叠的部分。
2.怎么求k的逆元
由于k与26互素,所以gcd(k,26)=1.
已知k和p=26,利用扩展欧几里得算法:kx+py=1可求得x,y,此时x即为对应的逆元。
扩展欧几里得算法求逆元---乘法密码相关推荐
- 扩展欧几里得算法求逆元_从辗转相除法到求逆元,数论算法初体验
今天是算法和数据结构专题的第22篇文章,我们一起来聊聊辗转相除法. 辗转相除法又名欧几里得算法,是求最大公约数的一种算法,英文缩写是gcd.所以如果你在大牛的代码或者是书上看到gcd,要注意,这不是某 ...
- 扩展欧几里得算法求逆元c语言,关于扩展欧几里得算法和逆元
关于扩展欧几里得算法和逆元 1.扩欧 a*x1+b*y1=gcd(a,b); b*x2+(a%b)*y2=gcd(b, (a%b))= gcd(a,b); a%b=a-(a/b)*b; 联立可得 x1 ...
- 扩展欧几里得算法-求逆
扩展欧几里得算法介绍
- 拓展 欧几里得算法 求逆元_ECC椭圆曲线加密算法:有限域和离散对数
Hi all,我来翻译第二篇啦.若大家发现那些翻译的不够准确还望指出,不胜感激.首先放上原文链接: http://andrea.corbellini.name/2015/05/23/elliptic- ...
- 表格法轻松理解扩展欧几里得算法以及利用其求乘法逆元
文章目录 扩展欧几里得算法 求乘法逆元 扩展欧几里得算法 具体算法的原理参见扩展欧几里得算法求乘法逆元,本文仅以表格的形式展现计算过程,浅显易懂.下面通过例子进行说明. 例:求1234和4321的最大 ...
- c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解
欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...
- 扩展欧几里得算法、乘法逆元与中国剩余定理
文章目录 前言 定义.定理和部分证明 整除 定义 定理 定理的证明 同余 定义 同余的性质 同余的运算律 运算律的证明 扩展欧几里得算法 代码模板 算法详解 乘法逆元 求解逆元 乘法逆元的作用 中国剩 ...
- 欧几里得扩展欧几里得算法及相关的数学证明
//欧几里得算法求最大公约数 int gcd(int m,int n) {int u0=m,u1=n,t;if( u0<u1 )// 保证u0>=u1u0^=u1,u1^=u0,u0^=u ...
- 欧几里得扩展欧几里得算法
#朴素的欧几里得算法大家应该知道 g c d ( a , b ) gcd(a,b) gcd(a,b)表示a,b的最大公约数 朴素的欧几里得算法其实就是所谓的辗转相除法 辗转相除法 g c d ( a ...
最新文章
- Django 分页和使用Ajax5.3
- 解决RecycleView 嵌套 RecycleView 显示不全的问题
- 3种方式限制ip访问Oracle数据库
- Android环绕地球动画,手机也能带你进入360°全景立体影音世界?---杜比全景声体验全接触...
- python垃圾回收机制gcgo_python垃圾处理机制
- 【备忘录】UTM坐标系与经纬度转换 MATLAB C语言
- C#-概念-类库:类库
- ”骇客“不可缺少的电脑软件
- 或许再过两年,ASML将可以自由给中国供应EUV光刻机
- Axure 8授权码
- android中涉及的字体修改
- java 进程 线程数量_如何查询一个进程下面的线程数(进程和线程区别)
- Java程序应用实例:“你好 Java”
- 最近整理的乱七八糟的东东
- HGame 2023 Week3 部分Writeup
- MSAA,SSAA,CSAA,CFAA...如何正确地为您的游戏设置抗锯齿模式
- 微软SQL Server2012增长对Hadoop的支撑
- 算法分析-C语言描述
- Spring Boot配置定时任务
- SVG 入门指南(初学者入门必备)
热门文章
- 手把手教你使用 EndNote X9
- Java EE 期末复习提纲【太原理工大学】
- 电子产品21个权威认证
- 【硬核】超强八位半开源万用表
- 3dMax 骨骼动画导入到Unity
- 基于JAVA罪犯信息管理系统计算机毕业设计源码+系统+数据库+lw文档+部署
- 使用windows电脑做IOS自动化测试
- mstsc.js远程桌面NODE_RDP_PROTOCOL_X224_NEG_FAILURE错误
- 使用Python对FPS游戏读写操作
- 高压功率放大器ATA-4052在径向驻波型超声波电机研究中的应用