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為任意整數...