http://blog.csdn.net/21aspnet/article/details/7249401#
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
三篇文章写得都非常好。
第一篇已经可以非常清楚细致的了解大概的在软件中应用加密和解密的过程或者说含义。
第二篇和第三篇可以非常详细的了解学习了RSA加密解密的具体过程,里面也设计到了很多高数的东西。数学底子好的可以深入了解一下。或者我再总结一下。
就是,有两个很大的质数相乘得到了一个很长的数。比如ABCDEFG七个字母是秘钥,我给你AB(CER文件)告诉你用这个加密,那么BC就是我的公钥,任何人都可以用这个东西加密,加密完之后发送给我,那么我的秘钥是根据RSA算出来的,也就是说只要你的加密过程没问题,那么我就可以用我的CDEFG私钥(pfx文件)来解密,解密完之后就是你要发给我的文件。如果解密失败了,那就是公钥或者私钥没对上,出了问题。
一句话就是,我有一把锁(公钥)一把钥匙(私钥),你把数据放到锁(公钥)里面传给我,我就用我的钥匙(私钥)来打开,再给我数据就好了。
但是有一点需要注意的是字面意思的理解,公钥和私钥是相对来说的,公钥就是大家都可以有的,私钥只有我能有。
不论公钥还是私钥都是一方提供的。