公钥加密算法的基石:大素数

素数,也叫质数,我们在十进制数学课上学过它的概念:指除了1和数本身之外,不能被其他自然数整除的数。

素数的概念极其简单,但对它的研究却是数学家一生的目的。当然,本文讨论的不是数学中对素数的研究,而是素数在现代密码学中的应用。

RSA公钥加密算法是素数的典型应用。RSA是非对称加密,它的加密和解密使用不同的密钥。对称加密在加密和解密过程中使用相同的密钥,更详细的读者可以自行搜索。

在RSA算法中,最基本的定理是RSA定理,描述如下:

让我们手动选择两个数,练习RSA算法,看看计算的奥秘。

从上面的计算过程来看,我们用的是最小的素数,7和11,其中涉及到很大的幂运算(51 43)结果是一个非常大的数。在实际应用中,如果P和Q是取值很大的质数,那么N、D、E的值也很大,所以运算的中间结果也很大,不能使用编程语言中提供的基本数据类型。在这里,我使用BigNumber库来计算。

至此,RSA算法中如何用素数加密解密的计算已经完成。以上内容均摘自《程序员数学思维训练》一书。有兴趣的同学可以看看这本书。作为程序员,了解基础的数学知识还是很有必要的。