乘法逆元的计算

简介: 乘法逆元的计算

       计算乘法逆元是学习加密算法的基础,在 RSA、ECC 和 AES 加密算法中都会用到,在网上提供的方法也有,比如扩展欧几里德算法等,看了以后要根据它提供的示例去推导也是有困难的,关键是自己太渣了。以前以为加密算法的基础是数学,后来才知道不是数学,而是数论。无路可逃啊!


乘法逆元的概念

      模 n 乘法逆元:对于整数 a、n,如果存在整数 b,满足 ab mod n = 1,则说,b 是 a 的模 n 乘法逆元。a 存在模 n 的乘法逆元的充要条件是 gcd(a, n) = 1。


       光看概念感觉不是太复杂,实际计算时还是有点绕,要找出一个给定 a 和 n 且能满足 (a * b - 1) / n = 0 中的 b 多少还是有点难度的。至少我这么觉得吧。


乘法逆元计算的流程

      不过后来得到一个简单的流程,根据流程计算还是相对比较容易的。流程如下:

  1. (x1, x2, x3) <- (1, 0, n); (y1, y2, y3) <- (0, 1, a)
  2. 如果 y3 = 0,返回 x3 = gcd(a, n) 无逆元
  3. 如果 y3 = 1, 返回 y3 = gcd(a, n);y2 = a ^ -1 mod n
  4. Q = max_int(x3 / y3)
  5. (t1, t2, t3) <- (x1 - qy1, x2 - qy2, x3 - qy3)
  6. (x1, x2, x3) <- (y1, y2,y3)
  7. (y1, y2, y3) <- (t1, t2, t3)
  8. 返回到 2


      在上面的流程中的 3 可以看出,如果 y3 等于 1,那么 y2 就是乘法逆元,如果 y2 是负数,那么需要把 y2 + n 后再 mod n,就可以得到 a 模 n 的乘法逆元了。

相关文章
|
7月前
|
存储 数据处理
数据的表示及计算
数据在计算机系统中以二进制形式表示和计算。二进制是一种由0和1组成的数字系统,计算机使用二进制来表示和处理数据。
20 0
|
8月前
|
Java
使用BML进行计算
使用BML进行计算
|
2天前
|
存储 NoSQL Unix
乘法逆元的计算
乘法逆元的计算
30 0
|
6月前
|
人工智能 数据处理 云计算
刊首语|计算到底是算什么
刊首语/EDITORS' NOTE
54 0
|
12月前
|
机器学习/深度学习 算法 数据挖掘
计算GMAC和GFLOPS
GMAC 代表“Giga Multiply-Add Operations per Second”(每秒千兆乘法累加运算),是用于衡量深度学习模型计算效率的指标。它表示每秒在模型中执行的乘法累加运算的数量,以每秒十亿 (giga) 表示。
227 0
计算GMAC和GFLOPS
|
12月前
计算职工工资
计算职工工资
91 0
|
12月前
计算油费
计算油费
103 0
|
12月前
|
小程序
先移动还是先计算
嗨!大家好,我是小蚂蚁。 今天我们分享一下游戏中物体运动时会遇到的一个问题,这也是我在制作泡泡龙游戏时所遇到的一个问题,即到底是应该先移动后计算,还是应该先计算后移动。
68 0
|
消息中间件 Prometheus 监控
P99 是如何计算的?
P99 是如何计算的?