非对称加密RSA的应用及在C#中的实现
2010-09-30 22:47:06 来源:WEB开发网一说到数据的加密,常常会涉及到这几个单词:算法、原文、密文和密钥。通常,发送者把原文通过一个加密的算法,用密钥进行加密后将密文发送给接收者,然后接收者再用密钥对密文进行解密,得到原文。由于常用的加密算法都是公开的,所以,对原文的加密的关键,就是密钥了。对于这种加解密都使用同样的密钥的算法,我们称之为对称加密,对称加密的代表算法就是DES家族了。那么这种对称加密有什么缺陷呢?由于加解密使用相同的密钥,那么这个密钥最少要保存在两个地方,如果加密的数据要发给多人,那么就会有更多的人知道密钥,这大大增加了密钥泄露的风险;并且密钥需要由发送方传递给接收方,那么如何保证密钥的传递的安全,则成了另外一个头疼的事情。为了解决这个问题,相对于对称加密,又出现了非对称加密。
什么是非对称加密?所谓的非对称加密,就是指加密和解密使用不同的密钥的一类加密算法。这类加密算法通常有两个密钥A和B,使用密钥A加密数据得到的密文,只有密钥B可以进行解密操作(即使密钥A也无法解密),相反,使用了密钥B加密数据得到的密文,只有密钥A可以解密。这两个密钥分别称为私钥和公钥,顾名思义,私钥就是你个人保留,不能公开的密钥,而公钥则是公开给加解密操作的另一方的。根据不同用途,对数据进行加密所使用的密钥也不相同(有时用公钥加密,私钥解密;有时相反用私钥加密,公钥解密)。非对称加密的代表算法是RSA算法。
那么非对称加密到底有哪些用途?
第一个用途当然是做数据加密。
请大家想象一下,如果我不想让除了接收方以外的其他人,知道我发送的数据的内容的话,需要用哪种密钥对数据进行加密?如果我使用私钥加密,那么根据非对称加密的原理,接收方需要使用公钥来解密,而公钥我已经公开给接收方了,这个方案似乎是可行的,可是这样做问题就出现在公钥上了。在非对称加密中,公钥的公开不仅仅指对接收方的公开,而是指这个密钥彻底的公开,任何人需要都可以得到,这样的话你发送的数据就没有任何秘密可言了。反过来,如果我使用公钥对数据加密,那么对于接收方来说就需要使用私钥进行数据解密,由于私钥只保存在接收方手中,这样其他人就不会得到数据的内容了。这样看来,在非对称加密中,如果需要保护你的数据不被第三者得到,密钥需要由接收方产生,然后接收方将公钥公开出去,发送方使用这个公开的公钥对数据进行加密后传输给接收方,接收方使用自己的私钥进行解密,从而保证了数据的安全性。所以非对称加密又称为公钥加密。
更多精彩
赞助商链接