ElGamal演算法

Init0ne發表於2021-06-19

簡介

ElGamal演算法可以用於加密和簽名,其安全性依賴於計算有限域上離散對數的難度。

ElGamal金鑰

生成金鑰對時,首先選擇素數p,兩個隨機數g和x,g和x都小於p,然後計算:
y = g ^ x mod p
私鑰:x
公鑰:y, g, p
其中,g和p可以由一組使用者共享。

ElGamal加解密

加密

對訊息m進行加密,首先選取隨機數k,k和p-1互素,然後計算:
a = g ^ k mod p
b = y ^ k * m mod p
ab是密文對(密文的大小是明文的兩倍)

解密

解密時,計算:
m = b / a ^ x (mod p)

ElGamal簽名

簽名

對訊息m進行簽名,首先選擇隨機數k,k和p-1互素,然後計算:
a = g ^ k mod p
然後利用擴充套件歐幾里得演算法從下式中求出b
m = (xa + kb) mod (p-1)
簽名結果為:(a, b),隨機數k需保密

驗籤

只需要驗證:
y^a * a^b mod p = g ^ m mod p

相關文章