购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2.1
RSA算法

RSA是由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)在1977年共同提出的,并由此三人的名字命名。该算法是具有代表性的基于大整数分解的非对称加密算法。下面通过两部分了解RSA算法:公、私钥参数生成以及加、解密过程。

RSA的公、私钥参数生成过程如下。

上述结果中,{ p , q , h }为私钥,{ n , t }为公钥。生成参数之后,就可以进行相应的加、解密操作了。加、解密的过程如下。

上述所有计算过程都是在集合 Z n ={0,1,…, n -1}中完成的。这些过程看上去复杂,不禁让人产生疑问:为什么这些参数和运算可以将明文加密再恢复成密文呢?我们不妨对该过程进行简单的推导。由于参数生成的过程中有 t × h mod φ ( n )=1,显然

( m t ) h mod n = m a × φ ( n )+1 mod n

这里 a 为整数。如果加密过程能恢复出明文 m ,需要有 m a × φ ( n ) mod n =1。大家可以了解 m φ ( n ) mod n =1这个结论是成立的。而且,当 m n 的最大公约数为1时,这个结论是数论中非常著名的“欧拉定理”;当 m n 的最大公约数不为1时,由于 n 是两个素数 p q 的乘积,我们可以把 m 表示为 p q 的倍数,那么 m φ ( n ) mod n =1这个结论也比较容易验证,在此不展开具体证明。

以上是RSA算法的密钥生成和加、解密的基本过程。下面对RSA背后的数学原理做一些解释。

RSA算法要求将明文 m 也表示成大整数,即 m Z n 。如果原文信息 m 太长,超出了RSA算法的要求,可以先对原文进行分块,再对每一块执行RSA加密。 3vgHDBX+NEig1RS12dkogDzbIY76dKiRp027B7aXGj/p84PxmxyWc8pYKCzZ8kLv

点击中间区域
呼出菜单
上一章
目录
下一章
×