【问题标题】:How to get the modular inverse by using Extended Eucledian Algorithm?如何使用扩展欧几里得算法获得模逆?
【发布时间】:2013-01-01 02:17:16
【问题描述】:

给定一个 mod b 并找到它的逆,然后做扩展的 GCD。

ax + by = gcd(a,b)

得到 x 和 y 后,如何得到它的倒数?

【问题讨论】:

  • 你说“它的”倒数。什么的反面?

标签: cryptography inverse modular


【解决方案1】:

如果gcd(a,b) != 1a 没有逆mod b

否则ax + by = 1,表示ax = 1 (mod b),所以xa mod b的倒数。

【讨论】:

    【解决方案2】:

    这样做可以计算 x 与模 m 的倒数:

    function inverse(x, m)
        a, b, u := 0, m, 1
        while x > 0
            q, r := divide(b, x)
            x, a, b, u := b % x, u, x, a - q * u
        if b === 1 return a % m
        error("must be coprime")
    

    这里:=是同时赋值运算符,所以右边所有的计算都是先做的,再做所有的赋值。 divide 函数返回 b / x 的商和余数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 2013-09-27
      • 2021-07-26
      相关资源
      最近更新 更多