導航:首頁 > 源碼編譯 > ecc加密演算法源碼

ecc加密演算法源碼

發布時間:2023-05-12 12:14:56

❶ 非對稱加密之ECC橢圓曲線(go語言實踐)

橢圓曲線密碼學(英語:Elliptic curve cryptography,縮寫為 ECC),一種建立公開密鑰加密的演算法,基於橢圓曲線數學。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。

ECC的主要優勢是在某些情況下它比其他的方法使用更小的密鑰——比如RSA加密演算法——提供相當的或更高等級的安全。

橢圓曲線密碼學的許多形式有稍微的不同,所有的都依賴於被廣泛承認的解決橢圓曲線離散對數問題的 困難性上。與傳統的基於大質數因子分解困難性的加密方法不同,ECC通過橢圓曲線方程式的性質產生密鑰。

ECC 164位的密鑰產生的一個安全級相當於RSA 1024位密鑰提供的保密強度,而且計算量較小,處理速度 更快,存儲空間和傳輸帶寬佔用較少。目前我國 居民二代身份證 正在使用 256 位的橢圓曲線密碼,虛擬 貨幣 比特幣 也選擇ECC作為加密演算法。

具體演算法詳解參考:

java ecc加密

java ecc加密是什麼,讓困畢我們一起了解一下:

ecc是橢圓曲線密碼,利用橢圓曲線來實現的密碼技術的統稱,java中ecc加密通過使用JPBC庫調用ECC橢圓曲線加解密演算法,能夠編寫簡單的實驗代碼進行正確的ECC加密和解密。

為什麼使用橢圓曲線加密演算法?

RSA的解決分解整數問題需要亞指數時間復雜度的演算法,而目前已知計算橢圓曲線離散對數問題(ECDLP)的最好方法都需汪者芹要全指嫌衫數時間復雜度。這意味著在橢圓曲線系統中我們只需要使用相對於RSA 短得多的密鑰就可以達到與其相同的安全強度。

例如,一般認為160比特的橢圓曲線密鑰提供的安全強度與1024比特RSA密鑰相當。使用短的密鑰的好處在於加解密速度快、節省能源、節省帶寬、存儲空間。

比特幣以及中國的二代身份證都使用了256 比特的橢圓曲線密碼演算法。

ecc演算法的過程是怎樣的?

1、公私鑰生成:

Alice首先構造一條橢圓曲線 E E E,在曲線上選擇一點 G G G作為生成元,並求 G G G的階為 n n n,要求 n n n必須為質數。

Alice選擇一個私鑰 k ( k < n ) k (k < n) k(k

❸ ECC橢圓曲線加密演算法(一)

btc address:
eth address:

隨著區塊鏈的大熱,橢圓曲線演算法也成了密碼學的熱門話題。在Bitcoin 生成地址 中使用到了橢圓曲線加密演算法。

橢圓曲線的一般表現形式:

橢圓曲線其實不是橢圓形的,而是下面的圖形:

Bitcoin使用了 secp256k1 這條特殊的橢圓曲線,公式是:

這個東西怎麼加密的呢?

19世紀挪威青年 尼爾斯·阿貝爾 從普通的代數運算中,抽象出了加群(也叫阿貝爾群或交換群),使得在加群中,實數的演算法和橢圓曲線的演算法得到了統一。是什麼意思呢?

我們在實數中,使用的加減乘除,同樣可以用在橢圓曲線中!
對的,橢圓曲線也可以有加法、乘法運算。

數學中的群是一個集合,我們為它定義了一個二元運算,我們稱之為「加法」,並用符號 + 表示。假定我們要操作的群用𝔾表示,要定義的 加法 必須遵循以下四個特性:

如果在增加第5個條件:
交換律:a + b = b + a

那麼,稱這個群為阿貝爾群。根據這個定義整數集是個阿貝爾群。

岔開一下話題, 伽羅瓦 阿貝爾 分別獨立的提出了群論,他們並稱為現代群論的創始人,可惜兩位天才都是英年早逝。

如上文所說,我們可以基於橢圓曲線定義一個群。具體地說:

在橢圓曲線上有 不重合且不對稱的 A 、B兩點,兩點與曲線相交於X點, X與 x軸 的對稱點為R,R即為 A+B 的結果。這就是橢圓曲線的加法定義。

因為橢圓曲線方程存在 項,因此橢圓曲線必然關於x軸對稱

曲線: ,
坐標:A=(2,5),B=(3,7)
A、B正好在曲線上,因為坐標滿足曲線公式


那如何找到相交的第三個點呢?

通過 A、B兩點確定直線方程,
設直線方程: ,m為直線的斜率

進一步得到c=1。

聯立方程:

X(-1,-1)的x坐標-1代入方式正好滿足方程,所以A、B兩點所在直線與曲線相交於 X(-1,-1),則點X的關於x軸的對稱點為R(-1,1),即A(2,5)+B(3,5)=R(-1,1)。

根據橢圓曲線的 群律(GROUP LAW) 公式,我們可以方便的計算R點。

曲線方程:
當A=(x1,y1),B=(x2,y2) ,R=A+B=(x3,y3),x1≠x2時,
, m是斜率
x3=
y3=m(x1-x3)-y1

A=(2,5), B=(3,7) , R=(-1,1) 符合上面的公式。

橢圓曲線加法符合交換律么?

先計算(A+B),在計算 A+B+C

先計算B+C, 在計算 B+C+A

看圖像,計算結果相同,大家手動算下吧。

那 A + A 呢, 怎麼計算呢?

當兩點重合時候,無法畫出 「過兩點的直線」,在這種情況下,
過A點做橢圓曲線的切線,交於X點,X點關於 x軸 的對稱點即為 2A ,這樣的計算稱為 「橢圓曲線上的二倍運算」。

下圖即為橢圓曲線乘法運算:

我們將在 ECC橢圓曲線加密演算法(二) 介紹有限域,橢圓曲線的離散對數問題,橢圓曲線加密就是應用了離散對數問題。

參考:

https://eng.paxos.com/blockchain-101-foundational-math
https://eng.paxos.com/blockchain-101-elliptic-curve-cryptography
https://andrea.corbellini.name/2015/05/17/elliptic-curve-cryptography-a-gentle-introction/

❹ 橢圓曲線密碼學ECC簡介及與RSA對比

《貨幣的非國家化鍵纖棚》
奧派經濟學(哈耶克 奧地利) —— 自由經濟學

多種貨幣,自由競爭
價值最穩定的幣勝出

原理: 基於整數豎茄分解問題。
優勢: 兩個大素稿則數的乘積,反向求解問題,較為簡單
劣勢: 性能差。需要設置很長的密鑰才能保證演算法- 安全,密鑰越長運算效率越低。
矛盾: 因計算機算力提升,需更長的密鑰來防止被攻擊。但移動設備加解密需更短的密鑰來保證通信效率,存在矛盾問題。

橢圓曲線密碼學ECC(下一代公開密鑰加密演算法 )

原理: 橢圓曲線、離散對數,比RSA復雜得多
優勢: 性能更好
劣勢: 復雜
缺陷:

總結新一代的公開秘鑰加密技術ECC:
優勢: 高效
劣勢: 復雜、後門問題、專利問題

來源

❺ 什麼是RSA和ECC演算法

RSA(Rivest-Shamir-Adleman)加密演算法:它是第 一個既能用於數據加密也能用於數字簽名的演算法。比較易於理解和操作,是高強度非對稱加密系統,密鑰長度少則512位,多則2048位,非常難破解,安全系數是非常高的。ECC(Elliptic Curve Cryptosystems )加密演算法:橢圓曲線密碼體制,它同樣也是在數據位上額外的位存儲一個用數據加密的代碼。橢圓曲線其實可能比RSA更復雜。國內的老品牌CA機構-天威誠信,旗下的vTrus SSL證書,該證書支持 SHA256 with RSA 2048 演算法/ECC 256 演算法。

❻ 橢圓曲線加密(ECC)核心演算法的簡明介紹

網上對於橢圓曲線加密過程的介紹過於繁瑣,對於只想了解加密如何進行的人來說浪費時間,所以我這里只對關鍵計算步驟進行介紹,略去橢圓曲線的相關原理(網路一搜一大把)。

最最關鍵且基本只用到的是 Ep(a,b)的加法

對與橢圓曲線y^2 = x^3+ax+b(mod p) :

兩點P(x1,y1) Q(x2,y2),P≠-Q,則P+Q=(x3,y3)由以下演算法定義:

實際通信流程如下:

再對點M進行解碼就可以得到明文。上述流程中的加法即為Ep(a,b)的加法。

這個演算法實際是基於已知kG難解k實現的,簡單清晰。

❼ 橢圓曲線加密演算法原理

橢圓曲線加密演算法,簡稱ECC,是基於橢圓曲線數學理論實現的一種非對稱加密毀核演算法。

相比RSA,ECC優勢是可以使用更短的密鑰,來實現與RSA相當或更高的安全,RSA加密演算法也是純擾一種非對稱加密演算法,在公開密鑰加密和電子商業中RSA被廣泛使用。據研究,160位ECC加密安全性相當於1024位RSA加密,210位ECC加密安全性相當於2048位做余旦RSA加密(有待考證)。

橢圓曲線也可以有運算,像實數的加減乘除一樣,這就需要使用到加群。19世紀挪威的尼爾斯·阿貝爾抽象出了加群(又叫阿貝爾群或交換群)。數學中的群是一個集合,我們為它定義了一個「加法」,並用符號+表示。假定群用 表示,則加法必須遵循以下四個特性:

❽ 橢圓曲線ECC加密演算法入門介紹(四)

五、密碼學中的橢圓曲線

我們現在基本上對橢圓曲線有了初步的認識,這是值得高興的。但請大家注意,前面學到的橢圓曲線是連續的,並不適合用於加密;所以,我們必須把橢圓曲線變成離散的點。

讓我們想一想,為什麼橢圓曲線為什麼連續?是因為橢圓曲線余備上點的坐標,是實數的(也就是說前面講到的橢圓曲線是定義在實數域上的),實數是連續的,導致了曲線的連續。因此,我們要把橢圓曲線定義在有限域上(顧名思義,有限域是一種只有由有限個元素組成的域)。

域的概念是從我們的有理數,實數的運算中抽象出來的,嚴格的定義請參考近世代數方面的數。簡單的說,域中的元素同有理數一樣,有自己得加法、乘法、除法、單位元(1),零元(0),並滿足交換率、分配率。

下面,我們給出一個有限域Fp,這個域只有有限個元素。

Fp中只有p(p為素數)個元素0,1,2 …… p-2,p-1;
Fp 的加法(a+b)法則是 a+b≡c (mod p);即,(a+c)÷p的余數 和c÷p的余數相同。
Fp 的乘法(a×b)法則是 a×b≡c (mod p);
Fp 的除法(a÷b)法則是 a/b≡c (mod p);即 a×b-1≡c (mod p);(b-1也是一個0到p-1之間的整數,但滿足b×b-1≡1 (mod p);具體求法可以參考初等數論,或我的另一篇文章)。
Fp 的單位元是1,零元是 0。

同時,並銷指不是所有的橢圓曲線都適合加密。y2=x3+ax+b是一類可以用來加密的橢圓曲線,也是最為簡單的一類。下面我們就把y2=x3+ax+b 這條曲線定義在Fp上:

選擇兩個滿足下列條件的小於p(p為素數)的非負整數a、b
4a3+27b2≠0(mod p)
則滿足下列方程的所有點(x,y),再加上 無窮遠點O∞ ,構成一條橢圓曲線。
y2=x3+ax+b (mod p)
其中 x,y屬於0到p-1間的整數,並將這條橢圓曲線記為Ep(a,b)。

我們看一下y2=x3+x+1 (mod 23)的圖像

是不是覺得不可思議?橢圓曲線,怎麼變成了這般模樣,成了一個一個離散的點?
橢圓曲線在不同的數域中會呈現出不同的樣子,但其本質仍是一條橢圓曲線。舉一個不太恰當的例子,好比是水,在常溫下,是液體;到了零下,水就變成冰,成了固體;而溫度上升到一網路,水又變成了水蒸氣。但其本質仍是H2O。

Fp上的橢圓曲線同樣有加法,但已經不能給以幾何意義的解釋。不過,加法法則和實數域上的差不多,請讀者自行對比。

1. 無窮遠點 O∞是零元,有O∞+ O∞= O∞,O∞+P=P
2. P(x,y)的負元是 (x,-y),有P+(-P)= O∞
3. P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下關系:
x3≡k2-x1-x2(mod p)
y3≡k(x1-x3)-y1(mod p)
其中若P=Q 則 k=(3x2+a)/2y1 若P≠Q,則k=(y2-y1)/(x2-x1)

例5.1 已知E23(1,1)上兩點P(3,10),Q(9,7),求1)-P,2)P+Q,3) 2P。
解 1) –P的值為(3,-10)
2) k=(7-10)/虧毀配(9-3)=-1/2,2的乘法逆元為12 因為2*12≡1 (mod 23)
k≡-1*12 (mod 23) 故 k=11。
x=112-3-9=109≡17 (mod 23);
y=11[3-(-6)]-10=89≡20 (mod 23)
故P+Q的坐標為(17,20)
3) k=[3(32)+1]/(2*10)=1/4≡6 (mod 23)
x=62-3-3=30≡20 (mod 23)
y=6(3-7)-10=-34≡12 (mod 23)
故2P的坐標為(7,12)

最後,我們講一下橢圓曲線上的點的階。
如果橢圓曲線上一點P,存在最小的正整數n,使得數乘nP=O∞,則將n稱為P的 階,若n不存在,我們說P是無限階的。
事實上,在有限域上定義的橢圓曲線上所有的點的階n都是存在的(證明,請參考近世代數方面的書)

練習:
1. 求出E11(1,6)上所有的點。
2.已知E11(1,6)上一點G(2,7),求2G到13G所有的值。

❾ 橢圓曲線加密演算法

橢圓曲線加密演算法,即:Elliptic Curve Cryptography,簡稱ECC,是基於橢圓曲線數學理論實現的一種非對稱加密演算法。相比RSA,ECC優勢是可以使用更短的密鑰,來實現與RSA相當或更高的安全。據研究,160位ECC加密安全性相當於1024位RSA加密,210位ECC加密安全性相當於2048位RSA加密。

橢圓曲線在密碼學中的使用,是1985年由Neal Koblitz和Victor Miller分別獨立提出的。

一般情況下,橢圓曲線可用下列方程式來表示,其中a,b,c,d為系數。

例如,當a=1,b=0,c=-2,d=4時,所得到的橢圓曲線為:

該橢圓曲線E的圖像如圖X-1所示,可以看出根本就不是橢圓形。

過曲線上的兩點A、B畫一條直線,找到直線與橢圓曲線的交點,交點關於x軸對稱位置的點,定義為A+B,即為加法。如下圖所示:A + B = C

上述方法無法解釋A + A,即兩點重合的情況。因此在這種情況下,將橢圓曲線在A點的切線,與橢圓曲線的交點,交點關於x軸對稱位置的點,定義為A + A,即2A,即為二倍運算。

將A關於x軸對稱位置的點定義為-A,即橢圓曲線的正負取反運算。如下圖所示:

如果將A與-A相加,過A與-A的直線平行於y軸,可以認為直線與橢圓曲線相交於無窮遠點。

綜上,定義了A+B、2A運算,因此給定橢圓曲線的某一點G,可以求出2G、3G(即G + 2G)、4G......。即:當給定G點時,已知x,求xG點並不困難。反之,已知xG點,求x則非常困難。此即為橢圓曲線加密演算法背後的數學原理。

橢圓曲線要形成一條光滑的曲線,要求x,y取值均為實數,即實數域上的橢圓曲線。但橢圓曲線加密演算法,並非使用實數域,而是使用有限域。按數論定義,有限域GF(p)指給定某個質數p,由0、1、2......p-1共p個元素組成的整數集合中定義的加減乘除運算。

假設橢圓曲線為y² = x³ + x + 1,其在有限域GF(23)上時,寫作:y² ≡ x³ + x + 1 (mod 23)

此時,橢圓曲線不再是一條光滑曲線,而是一些不連續的點,如下圖所示。以點(1,7)為例,7² ≡ 1³ + 1 + 1 ≡ 3 (mod 23)。如此還有如下點:

(0,1) (0,22)(1,7) (1,16)(3,10) (3,13)(4,0)(5,4) (5,19)(6,4) (6,19)(7,11) (7,12)(9,7) (9,16)(11,3) (11,20)等等。

另外,如果P(x,y)為橢圓曲線上的點,則-P即(x,-y)也為橢圓曲線上的點。如點P(0,1),-P=(0,-1)=(0,22)也為橢圓曲線上的點。

相關公式如下:有限域GF(p)上的橢圓曲線y² = x³ + ax + b,若P(Xp, Yp), Q(Xq, Yq),且P≠-Q,則R(Xr,Yr) = P+Q 由如下規則確定:

Xr = (λ² - Xp - Xq) mod pYr = (λ(Xp - Xr) - Yp) mod p其中λ = (Yq - Yp)/(Xq - Xp) mod p(若P≠Q), λ = (3Xp² + a)/2Yp mod p(若P=Q)

因此,有限域GF(23)上的橢圓曲線y² ≡ x³ + x + 1 (mod 23),假設以(0,1)為G點,計算2G、3G、4G...xG等等,方法如下:

計算2G:λ = (3x0² + 1)/2x1 mod 23 = (1/2) mod 23 = 12Xr = (12² - 0 - 0) mod 23 = 6Yr = (12(0 - 6) - 1) mod 23 = 19即2G為點(6,19)

計算3G:3G = G + 2G,即(0,1) + (6,19)λ = (19 - 1)/(6 - 0) mod 23 = 3Xr = (3² - 0 - 6) mod 23 = 3Yr = (3(0 - 3) - 1) mod 23 = 13即3G為點(3, 13)

建立基於橢圓曲線的加密機制,需要找到類似RSA質因子分解或其他求離散對數這樣的難題。而橢圓曲線上的已知G和xG求x,是非常困難的,此即為橢圓曲線上的的離散對數問題。此處x即為私鑰,xG即為公鑰。

橢圓曲線加密演算法原理如下:

設私鑰、公鑰分別為k、K,即K = kG,其中G為G點。

公鑰加密:選擇隨機數r,將消息M生成密文C,該密文是一個點對,即:C = {rG, M+rK},其中K為公鑰

私鑰解密:M + rK - k(rG) = M + r(kG) - k(rG) = M其中k、K分別為私鑰、公鑰。

橢圓曲線簽名演算法,即ECDSA。設私鑰、公鑰分別為k、K,即K = kG,其中G為G點。

私鑰簽名:1、選擇隨機數r,計算點rG(x, y)。2、根據隨機數r、消息M的哈希h、私鑰k,計算s = (h + kx)/r。3、將消息M、和簽名{rG, s}發給接收方。

公鑰驗證簽名:1、接收方收到消息M、以及簽名{rG=(x,y), s}。2、根據消息求哈希h。3、使用發送方公鑰K計算:hG/s + xK/s,並與rG比較,如相等即驗簽成功。

原理如下:hG/s + xK/s = hG/s + x(kG)/s = (h+xk)G/s= r(h+xk)G / (h+kx) = rG

假設要簽名的消息是一個字元串:「Hello World!」。DSA簽名的第一個步驟是對待簽名的消息生成一個消息摘要。不同的簽名演算法使用不同的消息摘要演算法。而ECDSA256使用SHA256生成256比特的摘要。
摘要生成結束後,應用簽名演算法對摘要進行簽名:
產生一個隨機數k
利用隨機數k,計算出兩個大數r和s。將r和s拼在一起就構成了對消息摘要的簽名。
這里需要注意的是,因為隨機數k的存在,對於同一條消息,使用同一個演算法,產生的簽名是不一樣的。從函數的角度來理解,簽名函數對同樣的輸入會產生不同的輸出。因為函數內部會將隨機值混入簽名的過程。

關於驗證過程,這里不討論它的演算法細節。從宏觀上看,消息的接收方從簽名中分離出r和s,然後利用公開的密鑰信息和s計算出r。如果計算出的r和接收到的r值相同,則表示驗證成功。否則,表示驗證失敗。

❿ 什麼是ECC加密演算法

ECC(Elliptic Curve Cryptosystems )橢圓曲線密碼體制,美國SUN公司開發的,它的體制根據其所依據的難題一般分為三類:大整數分解問題類、離散對數問題類、橢圓曲線類。有時也把橢圓曲線類歸為離散對數類,是目前已知的公鑰體制中,對每比特所提供加密強度最高的一種體制,如果你能理解RSA演算法,也算是對ECC有大概的了解,建議你去買些相關書籍看看。

閱讀全文

與ecc加密演算法源碼相關的資料

熱點內容
傳奇源碼分析是什麼 瀏覽:267
解放壓縮機支架 瀏覽:255
程序員禿頂搞笑相遇 瀏覽:6
IBM手機app商店叫什麼名字 瀏覽:834
jpeg壓縮質量 瀏覽:774
雲伺服器評測對比 瀏覽:145
java日期轉string 瀏覽:221
openfire源碼編譯 瀏覽:897
在線小工具箱引流網站源碼 瀏覽:337
非科班程序員自學 瀏覽:799
壓縮泡沫鞋底底材 瀏覽:219
程序員職場第一課2正確的溝通 瀏覽:679
遇到不合法app應該怎麼辦 瀏覽:90
匯編程序編譯後的文件 瀏覽:79
大智慧均線源碼 瀏覽:373
單片機排阻的作用 瀏覽:215
滴滴金融app被下架如何還款 瀏覽:212
jpg轉換成pdf免費軟體 瀏覽:744
范里安pdf 瀏覽:447
偽造pdf 瀏覽:79