跳转至

ElGamal

算法

公私钥生成

使用了离散对数困难问题的加密算法。 1. 选择一个素数q,\alpha是q的素根。 2. 随机生成一个整数X_A,使得1<X_a<q-1 3. 计算Y_A=\alpha^{X_A}\mod q 4. A的私钥位X_A,公钥为q,\alpha,Y_a

加密

  1. 讲信息表示为一个整数M,其中1\leq M \leq q-1,以分组密码序列的方式发送信息。
  2. 选择任意整数k,使得1\leq k \leq q-1.
  3. 计算一次密钥 K=Y_A^k \mod q
  4. 将M加密成密文对(C1,C2),C_1=\alpha ^k \mod q;C_2=KM \mod q

解密

  1. 计算出K=(C_1)^{X_A} \mod q
  2. 计算M=(C_2 K^{-1}) \mod q

攻击

如果k用于多个分块,则知道一个分块即可计算出其他块。


评论