密碼演算法之ElGamal初探

2021-09-29 23:27:12 字數 815 閱讀 2483

1,選取大素數p(採用miller和rabin素數測試快速得到),g屬於zp是乙個本原元,公開p和g。

#!!!!!這裡zp 指的是p的素數域 ,即比p小的與它互素的數的集合

求一素數最小生成元的**:

temp =

input

('請輸入素數p:'

)p =

int(temp)

p_need =

list

(range(1

,p))

c =[

]#存放某一元的集合,用來判斷與p_need是否相同

d =list

(range(1

,p))

e =list

(range

(p-1))

for i in

range(0

,p):

for j,z in

zip(d,e)

: temp =

(i ** j)

%p c.sort(

)if c == p_need:

print

('最小生成元為: '

,i)break

c =

2,隨機選取整數k, 1<=x<=p-2,計算y = g^x mod p

3,公鑰為y,私鑰為k

a選取隨機數r∈zp−1,對明文加密ek(m,r)=(y1,y2) 。

其中y1≡grmod p,y2≡m*yrmod p。

dk(y1,y2)=(y2(y1k)−1)modp≡m(gk)r(grk)−1≡m mod p

密碼演算法之ECC初探

使用者a先選擇一條橢圓曲線eq a,b 然後選擇其上的乙個生成元g,假設其階為n,之後再選擇乙個正整數na作為金鑰,計算pa na g。其中eq a,b q,g都會被公開。公鑰為pa。私鑰為na。使用者b在向使用者a傳送訊息m,這裡假設訊息m已經被編碼為橢圓曲線上的點,其加密步驟如下 1,查詢使用者...

Elgamal 加密演算法

elgamal演算法是由tather elgamal在1985年提出的,它是一種基於離散對數難題的加密體系,與ras演算法一樣,既能用於資料加密,也能用於數字簽名。elgamal演算法是基於因數分解,而elgamal演算法是基於離散對數問題。與rsa演算法相比,elgamal演算法哪怕是使用相同的私...

Elgamal演算法 簡單C語言演算法實現

目錄 elgamal演算法實現 1.基本演算法 2.具體演算法 3.4.結果 快速冪演算法 pow mod a,b,p 計算a b mod p elgamal加密演算法 elgamal en m,pub,p,g,c1,c2 c1 g k mod p c2 m pub k mod p 其中k為任意整數...