(1)参数设置
① 随机选择大素数p,且要求p-1有大素因子,g是Zp*
的生成元。
② 随机选取一个整数x(1<x<p-1),计算y=g^xmodp
公开密钥(公钥):k1=(y,g,p)
私有密钥(私钥):k2=x
(2)加密
消息明文为m,随机选取整数r,1<r<p-1,计算:
c=grmodp,c‘=myrmodp
将密文(c,c‘)发送给接收方。
(3)解密
①如果每次r值不变均相同,则有:
②相同明文的密文不同,不同明文的密文可能相同,增加破译难度。
例 发送方为A,接收方为B,B选择素数p=13171,生成元g=2,私钥 x=23,A将消息m=bu加密后发送给B,消息明文按英文字母表m=bu=0120
解:密钥生成:
公钥:y=11852,g=2,p=13171
私钥:x=23
加密:
解密:
(4)攻击
攻击者需由y,g,p及y=g^xmodp求出x,该问题称为离散对数问题:
x=loggy
注:该问题目前还没有被解决,是公认的数学难题之一。
注:有如下一些攻击方法:小步大步算法、指数积分法,但威胁不大。
量子计算机若出现,则可以很轻松穷举破译离散对数问题。
原文:https://www.cnblogs.com/liugangjiayou/p/12657882.html