日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

乘法逆元的计算

發布時間:2024/1/1 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 乘法逆元的计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 計算乘法逆元是學習加密算法的基礎,在 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 多少還是有點難度的。至少我這么覺得吧。

乘法逆元計算的流程

? ? ? ?不過后來得到一個簡單的流程,根據流程計算還是相對比較容易的。流程如下:

  • (x1, x2, x3) <-?(1,?0, n); (y1, y2, y3) <- (0, 1, a)

  • 如果 y3 = 0,返回 x3 = gcd(a, n) 無逆元

  • 如果 y3 = 1, 返回 y3 = gcd(a, n);y2 = a ^ -1 mod n

  • Q = max_int(x3 / y3)

  • (t1, t2, t3) <-?(x1 - qy1, x2 - qy2, x3 - qy3)

  • (x1, x2, x3) <-?(y1, y2,y3)

  • (y1, y2, y3) <- (t1, t2, t3)

  • 返回到 2

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

    總結

    以上是生活随笔為你收集整理的乘法逆元的计算的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。