离散对数加密算法

离散对数也是一种公钥加密算法,和RSA是基于大数分解这一数学难题一样,离散对数加密也是基于一个数学求解的难题,相对于大数据分解,求取离散对数的难度更大,所以离散对数加密也就相对更安全。
对于离散对数加密,下面对几个基本的概念:

1、离散对数求取难题

对于素数 p ,其可构成有限域 Gp ,可设 g Gp 域上的生成元,对于任意 x ,求取 h=gx ,这个正向运算是非常简单的,但是,在已知 g h 的条件下求取 x 则是非常困难的,这就是离散对数的求取难题,很显然,我们可以把 x 作为私钥,而把 h 作为公钥,反正你知道了 h 也很难求出 x

2、离散对数加密过程

假定有两个人要进行保密通信,也就是Alice要给Bob通信,Bob他把 (p,g,h) 作为公钥, k 作为私钥,公钥和私钥的关系是: h=gk
Alice这个时候有条信息 m 需要发送给Bob,她将采用如下的方式加密,首先,她选取一个随机数 r ,得到 C1=gr C2=mhr ,然后将 (C1,C2) 发送给Bob,这就完成了信息加密的过程,显然,Alice用了Bob的公钥进行加密,并且从加密的过程可以看出,Alice,随便选了一个 r ,但她给Bob传的是 C1=gr ,依据离散对数的求取难题,她可以放心的这样传,因为很难从 C1 得到 r

3、离散对数解密过程

Bob收到信息之后就利用自己的私钥进行解密:
C2(Ck1)1=mhrgrk=mgrkgrk=m

你可能感兴趣的:(加密算法)