小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

橢圓曲線入門詳解

 華燈初放l 2016-07-14

轉(zhuǎn)載請注明http://blog.csdn.net/boksic 如有疑問歡迎留言


如果不知道數(shù)學(xué)上的群、循環(huán)群等概念,可以先了解ElGamal加密算法 后再回過來橢圓曲線加密

這兩個算法有共通之處,都是在離散問題難解群上的加密算法,橢圓曲線是進(jìn)一步的加深


首先,什么是橢圓曲線

橢圓曲線(Elliptic curve)

叫橢圓曲線只是因為方程跟橢圓的曲線積分比較相似

橢圓曲線方程可以統(tǒng)一為

y^2=x^3+ax+b\,
當(dāng)然還有要求
至于長什么樣,繪個圖看看

用matlab寫了一個模擬程序,可以控制a,b變化,顯示曲線的圖像。

  1. clear;clc;figure(1);  
  2. a=0;  
  3. b=0;  
  4. h_text1=uicontrol('Style','text','String','a','Position',[50 20 50 20]);  
  5. h_text1=uicontrol('Style','text','String','b','Position',[50 0 50 20]);  
  6. ezplot(strcat('x+',num2str(a),'*y'));  
  7. h_slider1=uicontrol('Style','slider','Position',[100 20 200 20],...  
  8. 'Max',10,'Min',-10,'callback',['a=num2str(get(gcbo,''value''));',...  
  9. 'ezplot(strcat(num2str(b),''+x^3+'',num2str(a),''*x-y^2''))']);  
  10. %h_text2=uicontrol('Style','text','String','b');  
  11. h_slider2=uicontrol('Style','slider','Position',[100 0 200 20],...  
  12. 'Max',10,'Min',-10,'callback',['b=num2str(get(gcbo,''value''));',...  
  13. 'ezplot(strcat(num2str(b),''+x^3+'',num2str(a),''*x-y^2''))']);  


再直觀一點

(不得不說在這方面,Mathematica比Matlab要方便強(qiáng)力太多,用MATLAB做這個圖像速度慢代碼長步驟復(fù)雜效果爛)

b=0,a在[-20,20]上變動時的圖像 a=-6,b在[-20,20]上變動時的圖像
Plot3D[{(x^3+y*x)^0.5,-(x^3+y*x)^0.5},{x,-7,7},{y,-20,20}] Plot3D[{(x^3-6x+y)^0.5,-(x^3-6x+y)^0.5},{x,-7,7},{y,20,-20}]

"受ElGamal密碼啟發(fā),在其它離散對數(shù)問題難解的群中,同樣可以構(gòu)成ELGamal密碼。于是人們開始尋找其它離散問題難解的群。研究發(fā)現(xiàn),有限域GF(p)上的橢圓曲線的解點構(gòu)成交換群,而且離散對數(shù)問題是難解的。于是可在此群上建立ELGamal密碼,并稱為橢圓曲線密碼。"


解點交換群

為了構(gòu)成加法交換群,需要定義元素、單位元、逆元素、加法

解點

設(shè)p是大于3的素數(shù),且4a3+27b2 ≠0 mod p ,稱
    y^2 =x^3 +ax+b ,a,b∈GF(p)
為GF(p)上的橢圓曲線。
由橢圓曲線可得到一個同余方程:
    y^2 =x^3 +ax+b    mod p
其解為一個二元組<x,y>,x,y∈GF(p),將此二元組描畫到橢圓曲線上便為一個點,于是又稱其為解點。

單位元

引進(jìn)一個無窮點O(∞,∞),簡記為0,作為0元素。

     O(∞,∞)+O(∞,∞)=0+0=0 。

并定義對于所有的解點P(x ,y)有

     P(x ,y)+O=O+ P(x ,y)=P(x ,y) 

逆元素

任何解點R(x ,y)的逆就是 R(x ,-y)。

加法

P(x1 ,y1)+Q(x2 ,y2)=R(x3 ,y3) 

(提醒一下,這里的運(yùn)算都是模運(yùn)算,值都是整數(shù),像除法是模逆運(yùn)算)

定義s = (yP ? yQ)/(xP ?xQ),即PQ線的斜率

總共3種情況

1.一般情況下 R = P + Q = (xR, ? yR)其中

x_R = s^2 - x_P - x_Q,\,

y_R = y_P + s(x_R - x_P).\,


2.如果xP = xQ,yP = ?yQ(包括yP =yQ = 0的情形)

結(jié)果R就是無窮遠(yuǎn)點0


3 盡管xP = xQ但yP = yQ ≠ 0那么R =P +P = 2P = (xR,?yR)有

s = {(3{x_P}^2 - p)}/{(2y_P)},\,

x_R = s^2 - 2x_P,\,

y_R = y_P + s(x_R - x_P).\,

加法的幾何意義

設(shè)P和Q是橢圓曲線的兩個點,則連接P和Q的直線與橢圓曲線的另一交點關(guān)于橫軸的對稱點即為R點。在該群中P + Q + R = 0

ECClines.svg



橢圓曲線交換群實例

對于標(biāo)準(zhǔn)方程y^2=x^3+ax+b (mod p) 設(shè)定基本參數(shù)

 p=31,a=2,b=17

隨便找一個在曲線上(即滿足該方程)的點P=(10,13) 

然后按照上面提到的公式來逐一計算2P,3P,4P.....

我用的Python來計算(調(diào)用的mod_inv是模下的除運(yùn)算,代碼可參看前面的文章):

[python] view plain copy
  1. px,py=10,13  
  2. x,y=px,py  
  3. a,b=2,17   
  4. p=31  
  5. for i in range(p+20):  
  6.  if(x==px and y==py):   
  7.   x3=(9*x**4-8*x*y**2+6*a*x**2+a**2)\  
  8.   *mod_inv(4*y**2,p)%p  
  9.   y3=((3*x**2+a)*(x-x3)*mod_inv(2*y,p)-y)%p  
  10.  elif(x==px):  
  11.   x3,y3=0,0  
  12.  elif(x==0 and y==0):  
  13.   x3,y3=px,py  
  14.  else:  
  15.   x3=(((y-py)*mod_inv(x-px,p))**2-x-px)%p  
  16.   y3=((y-py)*(px-x3)*mod_inv(x-px,p)-py)%p  
  17.  str = "%dP= (%d,%d)"%(i+2,x3,y3)  
  18.  print str,  
  19.  x,y=x3,y3  

可以得到


[plain] view plain copy
  1. 2P= (21,19) 3P= (19,30) 4P= (27,10)  
  2. 5P= (29,25) 6P= (24,1) 7P= (30,13)  
  3. 8P= (22,18) 9P= (8,24) 10P= (20,11)  
  4. 11P= (6,11) 12P= (23,27) 13P= (12,23)  
  5. 14P= (3,22) 15P= (7,23) 16P= (1,19)  
  6. 17P= (17,2) 18P= (9,12) 19P= (13,15)  
  7. 20P= (5,11) 21P= (5,20) 22P= (13,16)  
  8. 23P= (9,19) 24P= (17,29) 25P= (1,12)  
  9. 26P= (7,8) 27P= (3,9) 28P= (12,8)  
  10. 29P= (23,4) 30P= (6,20) 31P= (20,20)  
  11. 32P= (8,7) 33P= (22,13) 34P= (30,18)  
  12. 35P= (24,30) 36P= (29,6) 37P= (27,21)  
  13. 38P= (19,1) 39P= (21,12) 40P= (10,18)  
  14. 41P= (0,0) 42P= (10,13)  

matlab顯示一下,點的分布與順序都是雜亂無章




    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多