[转帖]RSA 的原理与实现
HOME RSA 的原理与实现 https://cjting.me/2020/03/13/rsa/ 1976 年以前,所有的加密都是如下方式: A 使用某种规则对信息进行处理 B 使用同样的规则对处理过的信息进行复原 这个方式很好理解,不论是非常简单的 ROT13 还是目前广泛使用的 AES,都是这种对称加密方式。 但是这种方式有一个巨大的缺点,那就是 A 需要将对信息进行处理的规则(也就是秘钥)告诉给 B。怎样安全地传输秘钥就成了一个非常棘手的问题。 那么存不存在一种方式,加密和解密使用不同的秘钥,彻底规避掉传输秘钥的问题? 答案是存在的,感谢数学家和计算机科学家,RSA 就是这样一种非对称加密方式,也就是: 使用算法可以生成两把钥匙 A 和 B 使用 A 加密的信息,使用 B 可以解开 使用 B 加密的信息,使用 A 可以解开 日常使用中,我们把一把作为公钥,公开发布。一把作为私钥,自己保留。这样,任何人都可以使用我们的公钥加密信息发给我们,我们则可以使用自己的私钥解开。 只要把私钥保存好,这个通信系统就非常安全。 数学原理 现在我们来看看这样一个神奇的系统背后的数学原理。数学作为人类智慧皇冠上最灿烂的明珠,永远是那么的冷静迷人。这里我只陈述内容,具体的证明如果感兴趣可以 Google。 首先我们梳理几个概念。 互质 如果两个正整数,除了 1 以外没有其他的公因数,则他们互质