注意:这是一篇从旧博客恢复的文章。
如果有人问我数学有什么用,我一定会拿RSA算法甩他一脸。
今天下午无意中点开了RSA算法的资料,我决定把它搞清楚。以前我一直以为理解它需要很长时间,所以一直没看。今天学习了下,发现搞懂RSA的原理、看一些RSA的历史,总共也就花了我1个多小时的时间。看完之后不得不感叹这个算法的伟大。
RSA算法解决了如何在一个不安全的空间里安全地传输信息的问题,算法仅仅用到了最基本的数论知识:欧拉函数、费马小定理、欧拉定理、乘法逆元。
下面简单介绍一下RSA算法的思想。
如果直接传输信息,显然信息很容易被截取。人们想到使用加密的方法来保证安全,首先想到的是对称密钥加密算法,也就是加密解密使用同一种密钥。一个人用这个密钥加密,另一个人也用这个密钥解密。但是这里有个问题:两个人必须保证密钥的绝对安全。但是密钥又不能直接传送给接收者,只有通过安全的渠道传送密钥,例如当面商量。这极为麻烦。
RSA算法是一种公开密钥加密(非对称密钥加密)算法。用两个密钥就可以实现数据的安全传输。假设乙方要向甲方传输数据,甲方把公钥公开,私钥自己保存。乙方利用甲方的公钥将数据加密,传输到甲方后,甲方用自己的私钥进行解密。可能有人会问:既然别人可以利用公钥加密,那为什么不能利用公钥解密呢?事实上不是不行,而是太难。RSA算法恰好拥有这样一个特性:用公钥加密简单,用私钥解密简单,但是用公钥解密困难。
下面推荐几个不错的学习资料,介绍了RSA算法的具体实现过程:
阮一峰的RSA算法原理(一)、RSA算法原理(二)
matrix67的跨越千年的RSA算法
还有个关于RSA算法历史的:
localhost(matrix67女友)的RSA 算法是如何诞生的
还有个视频:
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。