离散对数公钥加密算法是目前最为热门的公钥加密算法 ,其安全性要远远高于基于大数分解的RSA算法。
离散对数问题可以描述为:给定一个质数p,和有限域Zp上的一个本原元a,对Zp上整数b,寻找唯一的整数c,使得a^c≡b(mod p)。一般的,如果仔细选择p,则认为该问题是难解的,且目前还没有找到计算离散对数问题的多项式时间算法。为了抵抗已知的攻击,p至少应该是150位的十进制整数,且p-1至少有一个大的素数因子。
下面是一个使用离散对数的例子:
Alice和Bob首先商议好p的值,本例假设为p=2579,则本原元为a=2。
假设Alice要发送消息x=1299给Bob,则
1)Bob选择随机数r=765作为自己的私钥,计算q=2^r mod p=2^756 mod 2579=949,作为公钥给Alice;
2)Alice选择随机数k=853,计算y=2^k mod p=2^853 mod 2579=435,作为公钥给Bob;
3)Alice计算密文e=x*q%k mod p=1299*949^853 mod 2579=2396,并传递给Bob;
4)Bob接收到密文后,计算x=e*(y^r)^(-1) mod p=2396*(435^765)^(-1) mod 2579=1299,从而得到原文。
离散对数公钥加密算法因其安全性高,成为热门加密方式,优于RSA。该问题在特定条件下被认为是难以解决的。Alice和Bob通过离散对数进行安全通信的示例展示了其工作原理:双方选择质数p,本原元a,利用离散对数计算密钥和解密原文。
2109

被折叠的 条评论
为什么被折叠?



