ELGamal非對稱加密算法


ELGamal是非對稱加密算法,和RSA類似

ELGamal密碼體制是T.ElGamal在1985年提出的公鑰密碼體制。它的安全性是基於求解離散對數問題的困難性,是RSA以後比較有希望的一個公鑰密碼。美國的DSS(Digital Signature Standard)的DSA(Digital Signature Algorithm)算法就是經ElGamal算法演變而來。目前DSA算法應用也非常廣泛。

1.公鑰的生成算法

    系統提供一個大素數p和GF(p)上的本原元素g。對每一個用戶A可選擇

    XA∈[ 0, 1, 2, ……,p-1]

    計算YA = gXA mod p

    其中,XA就是用戶的私鑰,YA就成爲用戶的公鑰,將YA公開,XA保密,由A自己掌握。

2.加密算法

    若A欲與B保密通信,設明文是m,m∈[ 0, 1, 2, ……,p-1]則可按如下步驟進行:

    (1)A找出B的公鑰YB = gXB mod p

    (2)A任意選隨機數x∈[ 0, 1, 2, ……,p-1],A計算C1 = (g)x mod p

    (3)A計算:K = (YB)x mod p = (gx)XB mod p,求C2  = ( K*m ) mod p

    (4)A將(C1,C2)作爲密文發送給B

3.解密算法

    B收到密文以後解密方法如下:

    (1)B用自己的密鑰XB計算:K = (YB)x mod p = (gx)XB mod p = (C1)XB mod p

    (2)B計算:K-1 mod p

    (3)求m = ( K-1*C2 ) mod p

    舉例說明如下:

    設p = 11,g = 7,在GF(11)上有70=1,71=7,72=5,73=2,74=3,75=10,76=4,77=6,78=9,79=8,710=1,因此7是GF(11)上的本原元素。

    設A的私鑰XA = 3,公鑰YA = 2;B的私鑰XB = 5,公鑰YB = 10,假定A要將信息m = 7發送給B,A取隨機數x = 5,A計算C1 = g5 mod 11 = 10,K = (YB)5 mod 11 = 10,C2 = K*m mod 11 = 70 mod 11 = 4。A 將(10,4)作爲密文發送給B,B收到後計算K = (C1)XB mod p = 105 mod 11 = 10,K-1 = 10(根據K* K-1 = 1 mod 11),則m = K-1* C2  = 40 mod 11 = 7。



算法實現:https://github.com/ljheee/ELGamalCipher

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章