上篇文章我们介绍了密码学的基础,相信你已经对密码学及相关的知识有所了解,如果还没有阅读过,可以点击这里查看?
这篇文章主要给大家讲解下RSA加密的过程,但在讲加密过程前我们需要了解几个数学公式。都很简单,相信大家看了就会明白,文中遇到有链接的地方,可先跳过不影响阅读。下面我们先来看看RSA加密的介绍。
RSA加密简介
本文开篇的这张图就是RSA加密的三位作者,RSA算法是由Rivest、Shamir和Adleman在1977年共同提出,他们当时正好都在麻省理工学院工作,RSA就是他们三人姓氏开头字母拼在一起组成的。
当年的照片,留心下他们的发际线对比?
但其实在RSA算法提出的4年前的1973年,在英国政府通讯总部工作的数学家克利福德·柯克斯(Clifford Cocks)在一个内部文件中便提出了一个与之等效的算法,但该算法当时被列入机密,直到1997年才得到公开(稍微有一些些可惜了~)。
从上篇文章我们了解到,RSA加密算法是通过分解质因数的困难性来实现的。换言之,对一个极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式破解。到当前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被破解的,正因为RSA加密的安全性,所以RSA加密算法在当今互联网信息传递中被广泛的使用。
可以毫不夸张的说:只要有计算机网络的地方就有RSA加密算法。
数学公式
前面说到要理解RSA加密需要先了解一些数论相关的知识,这里我总结了几个必要的公式,方便后面能够更好的理解加密过程。
1.互质关系
1.质数定义:除了1和它本身,不能被其它数整除的数。例如:2、3、5、7、11、13、17、19、23、29...
2.任意两个质数构成互质关系。例如5和7,除1之外没有其他数能够整除5和7。
3.