码迷,mamicode.com
首页 > 其他好文 > 详细

ElGamal密码

时间:2016-06-24 18:57:08      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

ElGamal也是一种基于离散对数的公钥体制,与Diffie-Hellman密钥体制密切相关。ElGamal密码体系用于数字签名标准(DSS)和S/MIME电子邮件标准等一些技术标准中。

算法描述:

  1、用户A选择一个素数qq的某本原根α,并产生一随机数XA1 < XA < q - 1。计算YA = αXA mod qA的私钥为XA,公钥为{q , α , YA}

  2、用户B要和用户A通信,使用A的公钥加密信息。加密过程如下:

    a) 使用分组密码序列的方式发送消息,每块分组表示成一个整数M, 1 ≤ M ≤ q - 1

    b) 选择一个随机整数k,使得1 ≤ k ≤ q - 1。每块分组的k值不相同

    c) 计算一次密钥K = (YA)k mod q

    d) 将M加密成明文对(C1,C2),其中

      C1 = αk mod q     C2 = KM mod q

  用户A恢复明文

    a)  通过计算K = (C1)XA mod q恢复密钥K   

    b)  计算M = (C2K-1) mod q

 

之所以每块分组的k都必须不同是因为若有多块分组k相同,则攻击者可以根据某块已知明文推算出其他的未知明文。

    C1.1 = αk mod q       C2.1 = KM1 mod q

    C1.2 = αk mod q       C2.2 = KM2 mod q

  于是

    技术分享

    如果M1已知,则可以很容易计算出M2

    M2 = (C2.1)-1C2.2M1 mod q

ElGamal密码

标签:

原文地址:http://www.cnblogs.com/block2016/p/5615042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!