分數的乘法逆元和負數的取模運算
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算法。
分數的乘法逆元和負數的取模運算