1. 程式人生 > >分數的乘法逆元和負數的取模運算

分數的乘法逆元和負數的取模運算

好的 分數 多少 研究 法則 表達 求余 推導 模運算

1.乘法逆元

A.定義

如果ax≡1 (mod p),且gcd(a,p)=1(a與p互質),則稱a關於模p的乘法逆元為x。

既然有ax≡1 (mod p),那麽有ax - py = 1,x是a關於模p的乘法逆元。

B.分數的乘法逆元

對於實數域,一個數的乘法逆元就是其倒數,所謂乘法逆元就是相乘等於單位元的那個數。

對於ecc算法的離散曲線域,m的乘法逆元為n,滿足m * n = 1 (mod p),即滿足m*n mod p = 1 mod p,稱作n就是m關於的p乘法逆元。在離散曲線域中,單位元就是1。如果在離散曲線域碰到一個表達式2/5,單純的碰到一個表達式2/5沒有任何意義,要看mod數是多少,如果是10,那麽a=2/5的真正值是求5關於10的乘法逆元,然後再乘以2 md 10。

2.負數的取模運算

在整數範圍內,自然數的求余法則並不被很多人所接收,大家大多認可的是下面的這個定義2。

如果a與d是整數,d非零,那麽余數r滿足這樣的關系:a = qd + r,q為整數,且0 <= |r| <|d|

根據定義. 7 = (-3)*(-2) + 1或7 = (-3)*(-3)-2,所以余數為1或-2,在ecc算法的離散曲線域中,我們只考慮非負整數所以這裏余數會取1。

3.推演

例如:求5關於模72的乘法逆元。

5X - 72Y = 1

解:72 = 14 *5+2

5 = 2*2 + 1

2 = 2*1 + 0

所以有1 = 5 - 2*2

= 5 - 2* (72-14*5)

= 5 - 2*72 + 28*5

= 29*5 - 2*72

最後有乘法逆元為29。

例如:求-1/2在離散曲線域(E23(1,1))中的值。

解:首先求2關於模23的乘法逆元為

2X-23Y = 1

23 = 11*2 + 1

2 = 2*1 +0

所以有1 = 23- 2*11 = 23 * (2-1) - 2*11 = 12*2 - 23,得乘法逆元為12

然後求 (-1 )*12 mod 23 ,因為有 (-12)*(-1) + 11 = 23,所以得值為11。

5.備註

以上為研究ecc算法推導的基礎知識難點,有這些概念才能更好的理解ecc算法。

分數的乘法逆元和負數的取模運算