橢圓曲線上兩種基本的運算 點集運算 P Q詳解

2021-09-29 20:22:59 字數 1315 閱讀 4725

rsa密碼體制在我們現在還是非常常用的,但是當今,計算機運算速度之快給該加密方式帶來了一定的威脅,為了保證安全性,它的金鑰長度需要一再地增大,使其運算負擔也隨之增大。相比下,橢圓密碼體制ecc(elliptic curve cryptography)可以用短得多的金鑰獲得同樣的安全性,因而具有廣泛的前景,如果沒記錯的話,區塊鏈技術就有用到橢圓曲線密碼體制,感興趣的小夥伴可以了解了解。

在密碼中,比較普遍的是採用有限域的橢圓曲線,有限域的橢圓曲線指的是曲線方程y2+axy+by=x3+cx2+dx+e(一般形式)中,所有係數都是某一有限域gf(p)中的元素(其中p為乙個大素數)。(gf(p)是定義在整數集合上的域,gf(p)上的加法和乘法分別是模加法和模乘法)。其中最常用的曲線方程是y2≡x3+ax+b(mod p)(其中a,b屬於gf(p),4a3+27b2≠0)。

查閱了很多網上的資料,橢圓曲線上的點集計算大多數的人都是通過**或者偽**(大多都是用暴力窮舉)來表示給我們看。但是對於需要考試,用筆計算的我來說可能不太適用,所以在此,想和大家分享下動筆計算的方法。

以我們假定的橢圓曲線為例,即:橢圓曲線方程為:y2≡x3+x+1,p=23。所以滿足a,b屬於gf(p),4a3+27b2≠0。下面就開始計算點集e23(1,1),我們可以進行計算第一象限的點集,即{(x, y)|0<=x3+ax+b(mod p),記錄其值,假定為x』。

2. 對於每乙個y計算y2(mod p),記錄其值,假定為y』。

3. 如果x』==y』,就記錄(x, y)這一點就是橢圓曲線點集中的一點。

4. 在這個例子中,x可以有23種可能,y也可能有23種可能,所以我們要計算232個點。

5. 最終滿足條件的點所構成的集合就是該曲線方程的點集。

我們可以從步驟種看出我們所需要計算量之大,因此用程式跑,可能會省時省力。

在這個計算中,p點和q點的相加不是我們初高中所列的式子(x1+x2, y1+y2)這麼簡單,橢圓密碼體制下的p+q有其一套運算。

假定p點為(x1, y1),q點為(x2, y2),p+q為(x3, y3),因此p+q由以下規則確定:

x3≡?2-x1-x2(mod p)

y3≡?(x1-x3)-y1(mod p)

?有兩種情況:(1)p=q,(2)p≠q

p=q情況下:?=(3x1

2+a)/(2*y1)

p≠q的情況下:?=(y2-y1)/(x2-x1)

由此我們便將p+q計算出來了。相信大家在學習過程也碰到了2p,3p,…,np的計算,這個不是單純的2*p這麼簡單,而是要進行如p+q的運算,如2p=p+p等等。

到此我們就把在橢圓曲線上比較基本的運算介紹完了,如有不合理的地方,希望大家能批評指正,另外希望能幫助到有需要的小夥伴們。

MFC繪製橢圓的兩種簡單方法

方法一 cdrawtest1view 繪製 void cdrawtest1view ondraw cdc pdc 類crect是對windows結構rect的封裝,凡是能用rect結構的地方都可以用crect代替。結構rect表示乙個矩形的位置和尺寸,其定義為 typedef struct tagr...

兩種基本的搜尋

搜尋是個 暴力的 好東西,學一學還是很有必要滴 首先就是dfs了,這是個好東西 一般來說,它分為3個階段 遞迴 回溯 dfs dfs的過程就類似於走迷宮時死磕一條路,除非走到死胡同,不然一直走下去,並且它會把所有可走的路都走一遍,因此它的效率不高,所以我們通常會加一些優化。最常用的是剪枝和記憶化 剪...

兩種基本的資料結構

棧的基本操作包括入棧push和出棧pop,棧有乙個棧頂指標top,指向最新如棧的元素,入棧和出棧操作操作都是從棧頂端進行的。佇列的基本操作包括入隊enqueue和出隊dequeue,佇列有隊頭head和隊尾tail指標。元素總是從隊頭出,從隊尾入。採用陣列實現佇列時候,為了合理利用空間,可以採用迴圈...