当前位置 博文首页 > Init0ne:ElGamal算法

    Init0ne:ElGamal算法

    作者:Init0ne 时间:2021-06-19 19:22

    简介

    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

    bk